Akh*_*ese 3 java android synchronized android-asynctask
我有以下代码片段.
synchronized (mObject) {
if (mObject.variable != -1) {
doThis();
doThisAsWell();
andThis();
insertObjectInDb(); // This is crashing because mObject.variable is -1
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,如果我在一个对象上使用synchronized,然后运行该块,那么任何其他线程都不能更改该变量的值,对吧?我不明白变量的值是-1,当我在进入下一个块之前专门检查它.不,该块中的所有功能都没有改变该值.我完全误解了这些块是如何工作的吗?
如果它很重要,那么这就是Android应用程序中异步任务的doInBackground()方法.
有任何想法吗?
据我所知,如果我在一个对象上使用synchronized,然后运行该块,那么任何其他线程都不能更改该变量的值,对吧?
不,你的假设是错的.synchronized是一个监视器.您唯一的保证是一次一个线程访问监视器.
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |