我正在使用Groovy 1.7.2。有什麼方法需要同步,有沒有更好的方法做這個或者我必須遵循相同的Java方法將關鍵字放在方法之前。有沒有Groovy方法使一個方法同步?
e.g : synchronized static def Map getMap(def fileName) { }
我正在使用Groovy 1.7.2。有什麼方法需要同步,有沒有更好的方法做這個或者我必須遵循相同的Java方法將關鍵字放在方法之前。有沒有Groovy方法使一個方法同步?
e.g : synchronized static def Map getMap(def fileName) { }
如果你可以升級到Groovy的1.7.3可以使用Synchronized
AST轉換來代替。您可以在實例和靜態方法上使用註釋。該註釋將在您的類中創建一個鎖變量(或者您可以使用現有的變量),並且該代碼在該鎖變量上同步。
使用塊應優先於將關鍵字添加到方法。如果在this
上同步的方法上使用關鍵字,這意味着要訪問類中任何方法的所有其他線程必須等待鎖再次釋放。
import groovy.transform.Synchronized
class YourClass {
@Synchronized
static Map getMap(def fileName) {
...
}
}
由於Groovy的1.7.3我們有一個新的AST轉換:@Synchronized
升級不是現在計劃的,但信息提供絕對很有幫助,它意味着在常規1.7.2我可以使用java同步風格, – anish