JMM小記
JMM,顧名思義,java memory model。他有3個特征:原子性,可見性,有序性。JVM系統中都有個一主存,JAVA中所有變量都是存儲在主存中,對所有線程都是共享的。
而每條線程都有自己的工作內存,工作內存中保存的是主存中某些變量的值,線程對所有變量的修改都是在工作內存中進行,線程之間無法直接互相訪問,變量的傳遞都是通過主存完成。
可見性:JMM中并發線程修改變量,必須將工作內存中的變量同步到主存后,其他線程才能訪問到
有續性:通過JAVA提供的同步機制或者volatile關鍵字 來保證內存的有序性
JAVA中保證多核系統JMM緩存一致性原則:happens-before ordering(先行發生排序)
JAVA提供了
1.synchronized關鍵字
2.volatile關鍵字
3.final關鍵字
4.同步包中的locks
5.同步包中的原子類