线程的安全性问题体现在:

  • 原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性
  • 可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到
  • 有序性:程序执行的顺序按照代码的先后顺序执行

 

导致原因:

  • 缓存导致的 --> 可见性问题
  • 线程切换带来的 --> 原子性问题
  • 编译优化带来的 --> 有序性问题

 

解决办法:

  • JDK Atomic开头的原子类、synchronized、LOCK,可以解决原子性问题
  • synchronized、volatile、LOCK,可以解决可见性问题
  • Happens-Before 规则可以解决有序性问题

 

相关文章:

  • 2022-12-23
  • 2021-12-07
  • 2022-01-12
  • 2022-02-01
  • 2022-02-06
  • 2022-01-26
  • 2021-10-03
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2021-12-20
  • 2022-02-16
  • 2021-11-04
  • 2022-12-23
  • 2021-11-27
  • 2021-09-24
相关资源
相似解决方案