
我有以下代码片段.
synchronized (mObject) { if (mObject.variable != -1) { doThis(); doThisAsWell(); andThis(); insertObjectInDb(); // This is crashing because mObject.variable is -1 }}据我所知,如果我在一个对象上使用synchronized,然后运行该块,那么任何其他线程都不能更改该变量的值,对吧?我不明白变量的值是-1,当我在进入下一个块之前专门检查它.不,该块中的所有功能都没有改变该值.我完全误解了这些块是如何工作的吗?
如果它很重要,那么这就是AndroID应用程序中异步任务的doInBackground()方法.
有任何想法吗?
解决方法:
To my kNowledge, if I use synchronized on an object, and then run that
block, the value of the variable can’t be changed by any other thread,
right?
不,你的假设是错的. synchronized是一个监视器.您唯一的保证是一次一个线程访问监视器.
总结以上是内存溢出为你收集整理的java – 这个同步代码如何破解?全部内容,希望文章能够帮你解决java – 这个同步代码如何破解?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)