您的位置:首页 > 其它

私有锁对象模式

2016-01-05 23:17 253 查看
// private lock object idiom - thwarts denial-of-service attack
private final Object lock = new Object();

public void foo() {
synchronized (lock) {
...
}
}


优点:防止其他客户端超时的持有锁对象,从而避免客户端的拒绝服务攻击;

注意:

1、lock域被声明为final的,这样可以防止不小心改变它的内容,而破坏锁对象;

2、私有锁对象模式只能用在无条件的线程安全类(实例是可变的,但是这个类有足够的内部同步,无需任何外部同步)上,有条件的线程安全类(部分方法安全)不能应用这种模式。

3、私有锁对象模式特别适用于专门为继承而设计的类,不然的话子类和父类很可能相互锁住对方。

参见《Effective Java 第二版》第70条。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: