簡體   English   中英

在同步塊中訪問靜態變量

[英]Access static variable in synchronized block

(Java同步問題)作為標題,我可以在同步塊中訪問靜態變量嗎? 會引起不一致嗎? 誰能告訴我訪問靜態變量同步塊的缺點或優點的詳細信息。

如何在同步塊中訪問靜態變量?

是的你可以。

會引起不一致嗎?

靜態意味着在JVM中該類的所有實例之間共享。 共享資源不是線程安全的 。因此,靜態變量也不是線程安全的,因此,如果多個線程嘗試訪問靜態變量,則可能導致不一致。

我所知道的同步訪問靜態變量的方法。

  1. 在靜態對象上同步。

      public class SomeClass{ private static int sum = 0; private static final Object locker = new Object(); public void increaseSum() { synchronized (locker) { sum++; } } } 
  2. 同步靜態方法。

     public class SomeClass { private static int sum = 0; public static synchronized void increaseSum() { sum++; } } 
  3. 在類對象上同步

      public class SomeClass { private static int sum= 0; public void increaseSum() { synchronized (SomeClass .class) { sum++; } } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM