2.Java的监视器模式-使用sychronized锁住私有对象

对于遵循Java监视器模式的对象,会将对象所有的可变对象给封闭起来,并由对象自己的内置锁进行保护。

/**
 * @author fenghongyu
 */
public class PrivateLock {
    private Object object = new Object();

    private Integer value;

    public void addValue(Integer val) {
        synchronized (object){
            value +=val;
        }
    }
}

监视器模式是一种编码约定,对于任何一种锁对象,只要自始至终都使用该锁对象,都可以用来保护对象的状态。

使用私有对象锁,相比使用公有对象锁,有如下好处:

私有的锁对象,可避免客户获取到锁,仅能通过方法来访问锁,以便合理的参与到它的同步策略中。
如果要验证某公有锁对象是否被正确使用,需要查询所有使用到的代码,但私有锁,仅需要核对私有锁对象所在的类。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 到目前为止, 我们已经介绍了关于线程安全与同步的一些基础知识。然而, 我们并不希望对每一次内存访问都进行分析以确保...
    好好学习Sun阅读 657评论 0 1
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,059评论 0 13
  • 目录 第二章 创建和销毁对象 1 考虑用静态工厂方法替代构造器 对于代码来说, 清晰和简洁是最重要的. 代码应该被...
    高广超阅读 1,472评论 0 12
  • 一.线程安全性 线程安全是建立在对于对象状态访问操作进行管理,特别是对共享的与可变的状态的访问 解释下上面的话: ...
    黄大大吃不胖阅读 878评论 0 3