是否有Groovy方法使方法同步?

时间:2011-10-22 05:12:49

标签: groovy

我正在使用Groovy 1.7.2。有些方法需要同步,有没有更流行的方法,或者我必须遵循相同的Java方法在方法之前放置synchronized关键字。

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

2 个答案:

答案 0 :(得分:11)

如果可以升级到Groovy 1.7.3,则可以使用Synchronized AST转换。您可以在实例和静态方法上使用注释。注释将在您的类中创建一个锁变量(或者您可以使用现有变量),并在该锁变量上同步代码。

与在方法中添加关键字相比,应优先使用synchronized块。如果在synchronized上同步的方法上使用this关键字,这意味着所有其他想要访问类中任何方法的线程必须等到锁再次空闲。

import groovy.transform.Synchronized

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

答案 1 :(得分:2)

Groovy 1.7.3 以来,我们有了一个新的AST转换:@Synchronized