2013-08-02 48 views
-1

我在多線程環境中有一個靜態共享資源。那麼,爲了確保順序訪問,我需要考慮多線程環境中的一些事情?如何在多線程環境中使用靜態

+3

正確的同步或不變性。有了一些代碼,我們可以更具體。 –

+0

您需要同步對此資源的讀取和寫入訪問。爲此,您需要使用此資源在所有線程之間共享的鎖。 – Matthias

+1

使用級別鎖執行對其的操作。 –

回答

3

使用級別鎖執行對其的操作。對於例如

public static void setResource(someResource) { 
    synchronized(ClassName.class) { 
      resource = someResource; 
    } 
} 

交替,你可以做以下

public static synchronized void setResource(someResource) { 
      resource = someResource; 
} 
0

如果只讀資源儘量做到一成不變,那麼你不必擔心 多線程。

如果它不是隻讀然後嘗試不使它static.Its一個壞主意。 因爲要同步它的訪問權限,你需要類級鎖。級別 鎖需要仔細檢查它可以不利地影響你的應用程序的性能 。

可能是您的靜態共享資源可以轉換爲使用任何併發數據 結構如ConcurrentHashMaP,ConcurrentLinkedQueue然後你很好去。

+0

請做添加評論你爲什麼downvoting? – veritas