java中的Synchronized有2個作用1. 互斥訪問2. 保證內存可見性關于第二點,總是有點疑惑,看了很多資料,一般這么描述,1. 在同一個鎖上修改,讀取共享變量,讀線程總是可以獲取最新變量值。2. 后面又有 這樣的描述: 線程釋放鎖時會將強制刷新工作內存中的臟數據到主內存中,獲取一個鎖將強制線程裝載(或重新裝載)字段的值.這里有個鏈接 http://ifeve.com/syn-jmm-visibility/這樣我也有點困惑,以前沒仔細想清楚,特地寫了以下代碼,希望高手可以解惑。假設有3個線程,線程1先調用set方法,然后線程2調用get方法,線程3調用get2方法則可以肯定線程2可以看到線程1修改的num值,線程3是否肯定可以看到最新值呢?
java Synchronized 內存可見性問題
蠱毒傳說
2018-07-15 11:16:14