设计线程安全的类

本文深入探讨了设计线程安全类时需关注的三个关键要素:识别对象状态、定义不变量条件及实现并发访问管理策略。以Counter类为例,详细分析了基本类型域作为状态元素、引用类型域如何影响整体状态以及同步方法的设计。

      在设计线程安全类的过程中,需要包含一下三个基本要素:

       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;
      }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值