Skip to content

Latest commit

 

History

History
26 lines (18 loc) · 968 Bytes

04第四章:对象的组合.md

File metadata and controls

26 lines (18 loc) · 968 Bytes

4.2.1 Java 监视器模式

Java 的内置锁称为监视器锁或监视器。

遵循 Java 监视器模式的对象会把对象的所有可变状态都封装起来,并由对象自己的内置锁来保护。

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

使用私有锁来保护状态

public class PrivateLocak {
    private final Object myLock = new Object();
    Widget widget;
    void someMethod() {
        synchronized (myLock) {
            // 访问或修改 Widget 的状态
        }
    }
}

使用私有的锁对象而不是对象的内置锁 (或其它可通过公有方式访问的锁),有许多的优点。

私有的锁对象可以将锁封装起来,使客户代码无法得到锁,但客户代码可以通过公有方式访问锁,以便 (正确或不正确地) 参与到它的同步策略中。