【发布时间】:2011-10-22 05:12:48
【问题描述】:
我正在使用 Groovy 1.7.2。有些方法需要同步,有没有更常规的方法可以做到这一点,或者我必须遵循相同的 Java 方法将 synchronized 关键字放在方法之前。
e.g : synchronized static def Map getMap(def fileName) { }
【问题讨论】:
标签: groovy
我正在使用 Groovy 1.7.2。有些方法需要同步,有没有更常规的方法可以做到这一点,或者我必须遵循相同的 Java 方法将 synchronized 关键字放在方法之前。
e.g : synchronized static def Map getMap(def fileName) { }
【问题讨论】:
标签: groovy
如果您可以升级到 Groovy 1.7.3,则可以改用 Synchronized AST 转换。您可以在实例和静态方法上使用注释。注释将在您的类中创建一个锁变量(或者您可以使用现有变量),并且代码在该锁变量上同步。
应该优先使用synchronized 块而不是向方法中添加关键字。如果在 this 上同步的方法上使用 synchronized 关键字,这意味着所有其他想要访问类中任何方法的线程都必须等到锁再次释放。
import groovy.transform.Synchronized
class YourClass {
@Synchronized
static Map getMap(def fileName) {
...
}
}
【讨论】:
从 Groovy 1.7.3 开始,我们有了一个新的 AST 转换:@Synchronized
【讨论】: