对于遵循Java监视器模式的对象,会将对象所有的可变对象给封闭起来,并由对象自己的内置锁进行保护。
/**
* @author fenghongyu
*/
public class PrivateLock {
private Object object = new Object();
private Integer value;
public void addValue(Integer val) {
synchronized (object){
value +=val;
}
}
}
监视器模式是一种编码约定,对于任何一种锁对象,只要自始至终都使用该锁对象,都可以用来保护对象的状态。
使用私有对象锁,相比使用公有对象锁,有如下好处:
私有的锁对象,可避免客户获取到锁,仅能通过方法来访问锁,以便合理的参与到它的同步策略中。
如果要验证某公有锁对象是否被正确使用,需要查询所有使用到的代码,但私有锁,仅需要核对私有锁对象所在的类。