Java内存模型

参考自http://www.cnblogs.com/dolphin0520/p/3920373.html

线程安全

1. 不可变对象一定是线程安全的
2. 绝对线程安全: 不管运行环境如何,调用者都不需要任何额外的同步措施
3. 相对线程安全:对这个对象单独的操作是线程安全的,不需要额外的保障措施,但是连续调用就可能需要额外的同步手段来保证调用的正确性
4. 线程兼容:本身不是线程安全的,但可以通过同步措施达到线程安全的目的(ArrayList、HashMap)
5. 线程对立:不可能实现多线程并发

线程安全的实现方法

1. 互斥同步:保证共享数据在用一个时刻只被一个线程使用
2. 非阻塞同步:基于冲突检测的乐观并发策略,先进行操作,如果没有其他线程争用共享数据则成功,否则采取其他的补偿措施
3. 无同步方案:所有可重入代码都是线程安全的(不依赖堆中数据或公共系统资源);线程本地存储(使共享数据的代码都保证在同一线程中执行)

posted on 2017-02-24 13:52  LeonNew  阅读(109)  评论(0编辑  收藏  举报

导航