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

java – 同步块内的同步块

发布时间:2020-12-15 04:42:41 所属栏目:Java 来源:网络整理
导读:我可以在另一个中包含一个同步块来同步另一个对象吗? 例: synchronized(myObjetc1){ // code synchronized(myObjetc2){ // code } } 如果是这样,它仍然是一种正确的技术还是风险太大? 解决方法 如果你在其他地方以相同的顺序同步,那就没问题了. 如果其他
我可以在另一个中包含一个同步块来同步另一个对象吗?

例:

synchronized(myObjetc1){
    // code
    synchronized(myObjetc2){
        // code         
    }           
}

如果是这样,它仍然是一种正确的技术还是风险太大?

解决方法

如果你在其他地方以相同的顺序同步,那就没问题了.

如果其他一些线程要执行以下代码

synchronized(myObjetc2){
    // code
    synchronized(myObjetc1){
        // code         
    }           
}

你可能会遇到僵局.

假设上面的变量引用相同的对象,请考虑以下情况.第一个线程(您的代码)将监视器锁定在myObjetc1上.线程调度程序切换线程上下文.第二个线程(上面的代码)将监视器锁定在myObjetc2上.线程调度程序切换线程上下文.第一个线程尝试将监视器锁定在myObjetc2上.它必须等待,因为第二个线程有它.线程调度程序切换上下文.第二个线程尝试将监视器锁定在myObjetc1上.它必须等待,因为第一个线程有它.繁荣!僵局.

(编辑:李大同)

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

    推荐文章
      热点阅读