原子性,可见性,顺序性如何保证?
多线程程序运行的安全问题体现在?
- 
原子性 
 一个或多个操作在CPU执行的过程中不被中断的特性
- 
可见性 
 一个线程对共享变量的修改,另外一个线程能立刻看到
- 
有序性 
 程序执行的顺序按照代码的先后顺序执行导致原因- 线程切换带来的原子性问题
- 缓存导致的可见性问题
- 编译优化带来的有序性问题
 
解决方法
- JDK Atomic原子类、synchronized、LOCK,可解决原子性问题
- synchronized、volatile、LOCK,可以解决可见性问题
- Happens-Before规则可以解决有序性问题
