java– 这个同步代码如何破解?

java– 这个同步代码如何破解?,第1张

概述我有以下代码片段.synchronized(mObject){if(mObject.variable!=-1){doThis();doThisAsWell();andThis();insertObjectInDb();//ThisiscrashingbecausemObject.variableis-1}}据我所知,如果我在一个对象上使用sy

我有以下代码片段.

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 – 这个同步代码如何破解?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1113423.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存