2013-01-31 51 views
1

我用線程創建了一個java程序,有時線程使用靜態方法,問題是該方法可能只能在此時運行一次。所以如果方法已經運行,它不應該再開始,而是等待然後重新開始。確保方法在當時運行

回答

3

您可以簡單地將該靜態方法標記爲​​,它將確保互斥:2個線程將無法同時運行,其中一個線程將不得不等待另一個線程完成方法的執行:

public static synchronized void method() { 
    //this part can only be executed by one thread at a time 
} 

這個符號相當於使用你的類的顯示器作爲操作的鎖,即:

class YourClass { 
    public static void method() { 
     synchronized(YourClass.class) { 
      //this part can only be executed by one thread at a time 
     } 
    } 
} 
+1

@格雷我澄清了它,沒有進入類加載器的考慮,因爲這可能會變得混亂;-) – assylias

0

「字」​​會幫助你

public static synchronized void method() { 
....code here 
notify();} 
相關問題