我正在使用Groovy 1.7.2。有些方法需要同步,是否有更加Groovier的方法来实现这一点,或者我必须遵循在方法前面放置synchronized
关键字的Java方式?
e.g : synchronized static def Map getMap(def fileName) { }
我正在使用Groovy 1.7.2。有些方法需要同步,是否有更加Groovier的方法来实现这一点,或者我必须遵循在方法前面放置synchronized
关键字的Java方式?
e.g : synchronized static def Map getMap(def fileName) { }
如果您可以升级到Groovy 1.7.3,您可以使用Synchronized
AST转换。您可以在实例和静态方法上使用该注释。该注释将在您的类中创建一个锁变量(或者您可以使用现有变量),并且代码将在该锁变量上同步。
应优先使用synchronized
块而不是将关键字添加到方法中。如果在方法上使用synchronized
关键字,则会在this
上同步,这意味着所有想要访问类中任何方法的其他线程都必须等待锁再次空闲。
import groovy.transform.Synchronized
class YourClass {
@Synchronized
static Map getMap(def fileName) {
...
}
}