线程安全与锁优化

2020-08-29  本文已影响0人  吴老板
什么是线程安全

过往在使用synchronized关键字的时候,通常都会和线程安全问题相挂钩。那么这个线程安全的定义又是什么呢? 在我学习《深入JVM虚拟机》这本书中提到了一段话我觉得解释的不错: "当多个线程访问一个对象是,如果不用考虑这些线程在运行时环境下的的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这对象的行为都可以获得正确的结果,那这个对象就是线程安全的 " 这个定义是比较严谨的,从它的描述来看线程安全必须具备的一个特征就是; 一段代码本身封装了所有必要的正确性保障手段(如互斥同步等), 另调用者无需关心多线程的安全问题,更无须自己采取任何措施来保证多线程的正确调用。

Java语言中的线程安全分类

为了更好的理解线程安全, 我们将线程安全性分解为更多的层次, 将线程安全程度有高到低进行排列: 不可变 -> 绝对线程安全 -> 相对线程安全 -> 线程兼容 -> 线程对立

线程安全的实现方法
Synchronized 优化点

jdk1.6之后HotSpot虚拟机开发团队话费了大量精力去实现各种锁优化技术,如适应性自旋锁,锁消除,锁粗化,轻量级锁和偏向锁等。

上一篇 下一篇

猜你喜欢

热点阅读