java – 这个同步代码如何破解?
发布时间:2020-12-15 04:25:29 所属栏目:Java 来源:网络整理
导读:我有以下代码片段. synchronized (mObject) { if (mObject.variable != -1) { doThis(); doThisAsWell(); andThis(); insertObjectInDb(); // This is crashing because mObject.variable is -1 }} 据我所知,如果我在一个对象上使用synchronized,然后运行该
我有以下代码片段.
synchronized (mObject) { if (mObject.variable != -1) { doThis(); doThisAsWell(); andThis(); insertObjectInDb(); // This is crashing because mObject.variable is -1 } } 据我所知,如果我在一个对象上使用synchronized,然后运行该块,那么任何其他线程都不能更改该变量的值,对吧?我不明白变量的值是-1,当我在进入下一个块之前专门检查它.不,该块中的所有功能都没有改变该值.我完全误解了这些块是如何工作的吗? 如果它很重要,那么这就是Android应用程序中异步任务的doInBackground()方法. 有任何想法吗? 解决方法
不,你的假设是错的. synchronized是一个监视器.您唯一的保证是一次一个线程访问监视器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |