设计模式
monitor模式
- 监视器是一个方法相互排斥的类,因此一次只能有一个线程位于类的实例中.即用ADT自己做lock
- 实现方法: 在所有方法内加上synchronized(this)或者synchronized
形如
public class XX {
private String text;
public XX() {
text = "";
}
public void length() {
synchronized (this) {
return text.length();
}
}// 哪怕这些trivial(不重要)的方法也要如此
//或者直接写synchronized关键字
//public synchronized void length() {
// return text.length();
//}
}
- 构造函数不用加锁,从语法上讲,Java实际上禁止它。因为在构造函数返回之前,构造中的对象应该被限制在单个线程中。 同步构造函数应该是不必要的
- 每个接触rep的方法都要被保护,哪怕是length、toString这样不重要的方法
- 因为read和write都要被保护