摘要:
1.java的内存模型,由于主存读取速度较慢,CPU在处理每个线程都有自己的高速缓存。
2.并发编程必须要保证原子性、可见性以及有序性。
3.被volatile关键字修饰的变量
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
4.Java内存模型具备一些先天的“有序性”,即不需要通过任何手段就能够得到保证的有序性,这个通常也称为 happens-before 原则。如果两个操作的执行次序无法从happens-before原则推导出来,那么它们就不能保证它们的有序性,虚拟机可以随意地对它们进行重排序。
5.volatile可以保证可见性,一定的“有序性;synchronized和Lock可以保证线程安全。
6.Atomic是利用CAS来实现原子性操作的(Compare And Swap)
参考链接:
https://www.cnblogs.com/dolphin0520/p/3920373.html