這與我之前的問題類似,因爲我仍然不清楚synchronized關鍵字。同步性能
這次我會把它縮短。
private int count = 0;
synchronized void increment() {
count++;
}
count是一個實例變量,它在2個線程中共享。
如果線程T1和T2試圖增量次數和OS給T1機會增加數第一: -
T1採用了鎖,原子遞增計數,花時間增量次數是1分鐘(考慮)包括時間來獲得鎖。
但是線程t2呢,它必須等到鎖定釋放。 鎖定釋放後,t2現在增加原子計數,這也需要1分鐘。
所以同步給出的正確性,但它也需要時間來執行。線程是爲了在較少的時間內完成工作,所以爲什麼要在線程中使用同步它有什麼用處。
我的理解是否正確?
你有固定的原子性,但沒有知名度'count'應該是'volatile' –
它的喜歡,你可以使用更多的人來完成在較短的時間了一些工作,但也有少數只有人員可以在給定時間完成的任務(同步修復瞭解關鍵部分的內容)。 –
@NitinDandriyal你可能會想到其他語言。根據JVM規範,在另一個線程中可以看到具有與另一個線程的before-before關係的線程中的動作。並且在同一個監視器上進行同步創建了這種發生之前的關係。訪問相同的易失性變量也可以。 –