线程安全策略汇总

不可变类

如果一个类初始化后,所有属性和类都是final不可变的,则它是线程安全,不需要任何同步,活性高

线程隔离

  • 方法内局部变量使用
  • 线程内参数传递
  • ThreadLocal持有

同步锁

  • synchronized的代码串行执行,线程安全,但活性低,JDK1.7之后已经优化
  • volatile变量锁外双重检测(JDK1.5+),降低锁竞争,降级锁颗粒度
  • 读写条件分离,锁粒度分级,排序锁

CAS

  • 循环设新值,如果旧值变化,则重设,乐观并发
  • ABA问题
  • 版本控制,扩展参考MYSQL的MVCC
posted @ 2021-02-25 09:28  大摩羯先生  阅读(18)  评论(0编辑  收藏  举报