2011-10-22 25 views
7

我正在使用Groovy 1.7.2。有什麼方法需要同步,有沒有更好的方法做這個或者我必須遵循相同的Java方法將​​關鍵字放在方法之前。有沒有Groovy方法使一個方法同步?

e.g : synchronized static def Map getMap(def fileName) { } 

回答

10

如果你可以升級到Groovy的1.7.3可以使用Synchronized AST轉換來代替。您可以在實例和靜態方法上使用註釋。該註釋將在您的類中創建一個鎖變量(或者您可以使用現有的變量),並且該代碼在該鎖變量上同步。

使用​​塊應優先於將關鍵字添加到方法。如果在this上同步的方法上使用​​關鍵字,這意味着要訪問類中任何方法的所有其他線程必須等待鎖再次釋放。

import groovy.transform.Synchronized 

class YourClass { 
    @Synchronized 
    static Map getMap(def fileName) { 
     ... 
    } 
} 
+0

升級不是現在計劃的,但信息提供絕對很有幫助,它意味着在常規1.7.2我可以使用java同步風格, – anish

2

由於Groovy的1.7.3我們有一個新的AST轉換:@Synchronized

相關問題