加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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()方法.

有任何想法吗?

解决方法

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是一个监视器.您唯一的保证是一次一个线程访问监视器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读