深入理解JVM13-线程安全与锁优化

深入理解JVM-线程安全与锁优化

按照安全程度我们将java语言中各种操作共享的数据分为5种。

  • 不可变
  • 绝对线程安全
  • 相对线程安全
  • 线程兼容
  • 线程对立

线程安全的实现方法

互斥同步

非阻塞同步

锁优化

锁优化技术

  • 适应性自旋
深入理解JVM13-线程安全与锁优化_第1张图片

自选等待不能代替阻塞。先不说对处理器数量的要求,自旋等待本身虽然避免了线程切换的开销,但是占用处理器时间。所以如果所被占用时间很多。效果较好。如果时间很长,就会白白量费处理器资源。因此自选等待要有一定的程度。如果自选超过了限定的次数仍没有获取锁。就应该使用传统的方式去挂起线程。

  • 锁消除
  • 锁粗化
深入理解JVM13-线程安全与锁优化_第2张图片
  • 轻量级锁
深入理解JVM13-线程安全与锁优化_第3张图片
深入理解JVM13-线程安全与锁优化_第4张图片
深入理解JVM13-线程安全与锁优化_第5张图片
深入理解JVM13-线程安全与锁优化_第6张图片
  • 偏向锁
深入理解JVM13-线程安全与锁优化_第7张图片
深入理解JVM13-线程安全与锁优化_第8张图片
深入理解JVM13-线程安全与锁优化_第9张图片

你可能感兴趣的:(深入理解JVM13-线程安全与锁优化)