2010-08-24 63 views
4

以下變量x是否需要變化?Java:使用鎖定時,所有可變變量都需要變化嗎?

或者utils.concurrent中的操作是否執行與同步塊相同的功能(確保它被寫入內存,而不是存儲在cpu緩存中)?

myMethod(){ 
    myLock.lock(); 
    x++; 
    myLock.unlock(); 
} 
+2

在實際的代碼中,你在'finally'子句中解鎖,不是嗎? – 2010-08-24 01:58:15

+0

偉大的一點亞歷山大,是的,我只是意識到這是我的問題,不得不修復一些代碼,以解鎖終於塊。 – 2010-08-25 01:07:25

回答

4

這樣的變量只需要是易失性的,如果他們訪問其他地方沒有鎖。例如,作爲大小變量的快速只讀訪問。鎖定方法的作用與同步塊相同。有關Lock類的信息,請參閱javadoc中的「內存同步」部分。

相關問題