java并发编程三大特性
- 原子性
- 可见性
- 有序性
- 原子性:一个线程在CPU中操作不可暂停,也不可中断,要不执行完成,要不不执行
解决方案: synchronized、lock
- 内存可见性:让一个线程修改共享变量对另一个线程可见
解决方案: synchrinized、volatile、Lock
- 有序性:指令重排,处理器为了提高程序运行效率,可能会对输入代码进行优化,它不保证程序中各个语句的执行先后顺序同代码中的顺序一致。但它会保证程序最终执行结果和代码程序执行的结果是一致的
解决方案: volatile