Java并发编程开发笔记——1简言
线程
风险:Java对线程的支持其实是一把双刃剑。
安全性问题:线程安全性可能是非常复杂的,在没有充足同步的情况下,多个线程的操作执行顺序是不可预测的,甚至会产生奇怪的结果。
@NotThreadSafe是一个自定义标注,用于说明类和类成员的并发属性。(其他标注包括@ThreadSafe和@Immutable)。如果用@ThreadSafe来标注某个类,那么开发人员可以放心地在多线程环境下使用这个类,维护人员也会发现它能保证线程安全性,而软件分析工具还可以识别出潜在的编码错误。
在UnsafeSequence类中说明的是一种常见的并发安全问题,称为竟态条件(Race Condition)。在多线程环境下,getValue是否会返回唯一的值,要取决于运行时对线程中操作的交替执行方式,这并不是我们希望看到的情况。
由于多个线程要共享相同的内存地址空间,并且是并发运行,因此它们可能会访问或修改其他线程正在使用的变量。
通过将getNext修改为一个同步方法,可以修复UnsafeSequeance中的错误。
最后更新:2017-06-23 23:34:47