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

java – 为什么使用私有锁而不是内部锁?

发布时间:2020-12-14 23:55:45 所属栏目:Java 来源:网络整理
导读:在阅读有关同步的过程中,我遇到了“监控模式”来封装可变状态. 以下是示例代码 public class MonitorLock { private final Object myLock = new Object(); Widget widget; void someMethod() { synchronized(myLock) { // Access or modify the state of wid
在阅读有关同步的过程中,我遇到了“监控模式”来封装可变状态.

以下是示例代码

public class MonitorLock {
      private final Object myLock = new Object();
      Widget widget;
      void someMethod() {
        synchronized(myLock) {
         // Access or modify the state of widget
        }
    }

}

以任何方式拥有私有锁而不是内在锁更好吗?

解决方法

是的 – 这意味着你可以看到所有可能获得锁定的代码(不考虑反射的可能性).

如果您锁定此(这是我假设您通过“内部锁定”引用的),那么其他代码可以执行:

MonitorLock foo = new MonitorLock();
synchronized(foo) {
    // Do some stuff
}

此代码可能距离MonitorLock本身很远,可能会调用其他方法,而这些方法又会取出监视器.在这里很容易进入死锁区域,因为你无法轻易看到将要获得哪些锁定.

使用“私有”锁定,您可以轻松查看获取该锁定的每一段代码,因为它们都在MonitorLock中.因此,更容易推理出这种锁定.

(编辑:李大同)

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

    推荐文章
      热点阅读