深入理解java虚拟机-第13章-线程安全与锁优化
2014-12-28 16:16
393 查看
第十三章 线程安全与锁优化
线程安全
java语言中的线程安全
1 不可变。Immutable 的对象一定是线程安全的
2 绝对线程安全 一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施,通常需要付出很大甚至是不切实际的代价,在java api中标注自己是线程安全的类,大多数都不是绝对的线程安全
3 相对线程安全
4 线程兼容 对象本身不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全使用
5 线程对立
线程安全的实现方法
1 互斥同步 Murual Exclusion & Synchronization
常见的并发正确性保障手机,同步是指多个线程并发访问共享数据时,保存证共享数据在同一时刻只被一个线程使用
最基本的互斥手段是synchronized关键字。
还可以使用java.util.concurrent包中的锁来实现同步 ReentrantLock,
JDK1.6对synchronized做了优化,效率与ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于冲突检测的乐观并发策略
CAS操作 Compare-and-Swap
3 无同步方案
锁优化
1、自旋锁与自适应自旋
2、锁消除
3、锁粗化
4、经量级锁
5、偏向锁
整本书 可以在Blog :《深入理解Java虚拟机》笔记 中来统查看要点。
线程安全
java语言中的线程安全
1 不可变。Immutable 的对象一定是线程安全的
2 绝对线程安全 一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施,通常需要付出很大甚至是不切实际的代价,在java api中标注自己是线程安全的类,大多数都不是绝对的线程安全
3 相对线程安全
4 线程兼容 对象本身不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全使用
5 线程对立
线程安全的实现方法
1 互斥同步 Murual Exclusion & Synchronization
常见的并发正确性保障手机,同步是指多个线程并发访问共享数据时,保存证共享数据在同一时刻只被一个线程使用
最基本的互斥手段是synchronized关键字。
还可以使用java.util.concurrent包中的锁来实现同步 ReentrantLock,
JDK1.6对synchronized做了优化,效率与ReentrantLock基本上是完全持平了。
2 非阻塞同步
基于冲突检测的乐观并发策略
CAS操作 Compare-and-Swap
3 无同步方案
锁优化
1、自旋锁与自适应自旋
2、锁消除
3、锁粗化
4、经量级锁
5、偏向锁
整本书 可以在Blog :《深入理解Java虚拟机》笔记 中来统查看要点。
相关文章推荐
- 深入理解java虚拟机--线程安全与优化
- [深入理解Java虚拟机]第十三章 线程安全与锁优化-锁优化
- [深入理解Java虚拟机]第十三章 线程安全与锁优化-线程安全
- 深入理解 Java 虚拟机--线程安全与锁优化
- 深入理解JVM虚拟机 线程安全与锁优化
- 探索深入理解java虚拟机之线程安全与锁优化(8)
- 深入理解JVM学习笔记——第十三章 线程安全与锁优化
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结—— 第十三章 线程安全与锁优化
- coreData 深入理解3 (iOS5 以前线程安全与同步)
- 深入理解线程安全与Singleton
- [深入理解Java虚拟机]第十二章 Java内存模型与线程-Java内存模型
- 深入理解java虚拟机-第13章-线程安全与锁优化
- 2016书单总结--深入理解Java虚拟机-Java线程简析
- [深入理解Java虚拟机]第十二章 Java内存模型与线程-Java与线程
- coreData 深入理解4 --总结 (线程安全与同步--iOS5 前后对比)
- 深入理解Java虚拟机--java内存模型与线程
- 深入理解Java虚拟机----(十)Java内存模型与线程
- [深入理解Java虚拟机]第十章 程序编译与代码优化-早期(编译期)优化
- coreData 深入理解3 (iOS5 以前线程安全与同步)
- [深入理解Java虚拟机]第十一章 程序编译与代码优化-晚期(运行期)优化