在设计线程安全类的过程中,需要包含一下三个基本要素:
1.找出构成对象状态的所有变量。
2.找出约束状态变量的不变形条件。
3.建立对象状态的并发访问管理策略。
要分析对象的状态,首先从对象的 域开始。。如果对象中所有的域都是基本类型的变量,那么这些域将构成对象
的全部状态。程序清单中的Counter只有一个域value,因此这个域就是Counter的全部状态。对于含有n个基本类型
的对象,其状态就是这些构成的n元祖。二维点的状态就是它的坐标值(x,y)。如果在对象的域中引用了其他对象,
那么该对象的状态将包含被引用对象的域。例如,Linkedlist的状态就包括该链表中所有节点对象的状态。
public final class Counter {
private long value=0;
public synchronized long getValue(){
return value;
}
public synchronized long increment(){
if(value==Long.MAX_VALUE)
throw new IllegalStateException("conter overflow");
return ++value;
}
}