我正在使用Groovy 1.7.2。有些方法需要同步,有没有更流行的方法,或者我必须遵循相同的Java方法在方法之前放置synchronized
关键字。
e.g : synchronized static def Map getMap(def fileName) { }
答案 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