第70条: 线程安全性的文档化

作者&投稿:沙睿 (若有异议请与网页底部的电邮联系)
~ 首先说一个错误的说法:通过查看文档中是否出现synchronized修饰符,可以确认一个方法是否是线程安全的。线程安全性不是一种“要么全有要么全无”的属性。实际上,线程安全性有多种级别。针对常见的情形作简单概括:
--不可变的(immutable) -这个类的实例是不可变的,不需要外部同步。例如String、long和Biginteger
--无条件的线程安全(unconditionally thread-safe) -这个类的实例是可变的,但是这个类有足够的内部同步,它的实例可以被并发使用,无需任何外部同步。例如Random和ConcurrentHashMap
--有条件的线程安全(conditionally thread-safe) -对于单独的操作可以是线程安全的,但是某些操作序列可能需要外部同步。条件线程安全的最常见的例子是遍历由 Hashtable 或者 Vector 或者返回的迭代器。由这些类返回的 fail-fast 迭代器假定在迭代器进行遍历的时候底层集合不会有变化。为了保证其他线程不会在遍历的时候改变集合,进行迭代的线程应该确保它是独占性地访问集合以实现遍历的完整性。通常,独占性的访问是由对锁的同步保证的。并且类的文档应该说明是哪个锁(通常是对象的内部监视器(intrinsic monitor))。
--非线程安全(not thread-safe) - 这个类的实例是可变的。为了并发地使用它们,必须利用外部同步包围每个方法调用。例如ArrayList和hashMap。
--线程对立的(thread-hostile) - 即使所有的方法调用都被外部同步包围,这个类仍不能安全地被多个线程并发使用。线程对立的类或者方法非常少,当类修改静态数据,而静态数据会影响在其他线程中执行的其他类的行为,这时通常会出现线程对立。线程对立类的一个例子是调用 System.setOut() 的类。
二、注意:
1.有条件的线程安全类,必须指明哪个方法调用序列需要外部同步,以及在执行这些序列的时候要获得哪把锁。
2.无条件的线程安全类,应该考虑使用私有锁对象(private lock object)来代替同步的方法:

因为这个私有锁对象不能被这个类的客户端程序访问,所以它们不可能妨碍对象的同步。

总结:
每个类都应该利用严谨的说明或者线程安全注解,清楚地在文档中说明它的线程安全属性。synchronized修饰符与这个文档毫无关系。有条件的线程安全类和无条件的线程安全类应该按照上述规范编写实现文档。这样可以防止客户端程序和子类的不同步干扰,让你能够在后续的版本中灵活地对并发控制采用更加复杂的方法。


马边彝族自治县17778043739: 委托代理,法定代理,指定代理终止的共同原因有哪些 -
召香百梅: 法定代理 (一)被代理人取得或者恢复民事行为能力; (二)被代理人或者代理人死亡; (三)代理人丧失民事行为能力; (四)指定代理的人民法院或者指定单位取消指定; (五)由其他原因引起的代理人和代理人之间的监护关系消灭. 委托代理 (1)代理期间届满或者代理事项完成; (2)被代理人取消委托或代理人辞去委托; (3)代理人死亡或代理人丧失民事行为能力; (4)作为被代理人或者代理人的法人终止. 所以是代理人死亡

马边彝族自治县17778043739: 设等差数列的第10项为23第25项为 - 22 求数列{an}的通项公式an并指出从第几项起开始小于0 -
召香百梅: a10=23 a25=-22 a25-a10=a1+24d-a1-9d=15d=-22-23 d=-3 a10=a1+9d=a1-27=23 a1=50 an=50-3(n-1)=-3n+53 ann>53/3=17+2/3 所以从第18项起开始小于0

马边彝族自治县17778043739: 场外股票质押的法律要求有哪些 -
召香百梅: 1 股票现状调查 由于股票价格频繁波动,因此股票出质人和质权人对通过质押股票所能获取的融资金额以及质押股票所具备的返款担保能力甚为关注.为准确反映担保能力,质权人须调查股票状况,包括(1)股票本身的情况,即股票持有人是...

马边彝族自治县17778043739: 江苏省交通运输管理条例第七十条的内容是什么? -
召香百梅: 江苏省交通运输管理条例第七十条的内容:违反本条例的规定,客运经营者、货运经营者有下列情形之一的,由县级以上道路运输管理机构责令改正,处1000元以上3000元以下的罚款;情节严重的,由原许可机关吊销道路运输经营许可证:(一)不按批准的客运站点停靠或者不按规定的线路、公布的班次行驶的;(二)强行招揽旅客、货物的;(三)在旅客运输途中擅自变更运输车辆或者将旅客移交他人运输的;(四)未报告原许可机关,擅自终止客运经营的;(五)没有采取必要措施防止货物脱落、扬撒等的.

马边彝族自治县17778043739: 江苏省交通运输管理条例第七十条的内容是什么?
召香百梅: 第七十条 违反本条例的规定,客运经营者、货运经营者有下列情形之一的,由县级以上道路运输管理机构责令改正,处1000元以上3000元以下的罚款;情节严重的,由原许可机关吊销道路运输经营许可证: (一)不按批准的客运站点停靠或者不按规定的线路、公布的班次行驶的; (二)强行招揽旅客、货物的; (三)在旅客运输途中擅自变更运输车辆或者将旅客移交他人运输的; (四)未报告原许可机关,擅自终止客运经营的; (五)没有采取必要措施防止货物脱落、扬撒等的.

马边彝族自治县17778043739: 《阿长与山海经》中的好词好句30好词10个好句 -
召香百梅: 阿长与山海经 鲁迅 体裁:回忆性叙事散文长妈妈,已经说过,是一个一向带领着我的女工,说得阔气一点,就是我的保姆.我的 母亲和许多别的人都这样称呼她,似乎略带些客气的意思.只有祖母叫她阿长.我平时叫她 “阿妈”,连“长”...

马边彝族自治县17778043739: 三角形的三条边都是整数,一条10厘米,一条8厘米,第三条h厘米,h最大多少,最小的 -
召香百梅: 在一个三角形中,任意两边之和大于第三边,任意两边之差小于第三边.所以第三边边长 10-8<h<10+8 即2<h<18 取整数h最小等于3

马边彝族自治县17778043739: 新颁布的交通法70条和75内容是什么// -
召香百梅: 第75条:抢救费用超过责任限额的,未参加机动车第三者责任强制保险或者肇事后逃逸的,由道路交通事故社会救助基金先行垫付部分或者全部抢救费用,救助基金管理机构有权向交通事故责任人追偿. 第70条规定当事人可以自行撤离现场和必须撤离现场的规定.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网