码迷,mamicode.com
首页 > 编程语言 > 详细

java并发之如何向已有的线程安全类添加新功能--java并发编程实践

时间:2015-04-05 19:06:31      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:


        添加一个新原子操作的最安全的方式是,修改原始的类,以支持期望的操作。但是你可能无法访问源代码或者没有修改的自由,所以通常是不可能的。即使你可以修改原始的类,也需要理解其实现的同步策略,才能在维持原有设计的前提下完善它的功能。直接向类中加入新方法,意味着所有实现类同步策略的代码仍然包含在一个源代码文件中,因此便于理解与维护。

        另一种方法是扩展这个类。因为扩展后,同步策略的实现会被分布到多个独立维护的源代码文件中,所以 扩展一个类比直接在类中加入代码更脆弱。如果底层的类选择了不同的锁保护它的状态变量,从而会改变它的同步策略,子类就在不知不觉中被破坏,因为它不能再用正确的锁控制对基类状态的并发访问。

        第三个策略是客户端加锁,即扩展功能,而不是扩展类本身,并将扩展代码置入一个”助手“类中。

代码例子及注意事项详见P72.

        第四个选择,也是更健壮的选择:组合。


java并发之如何向已有的线程安全类添加新功能--java并发编程实践

标签:

原文地址:http://my.oschina.net/doctor2014/blog/396294

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!