有没有一种 Groovy 方法可以使方法同步?
我正在使用 Groovy 1.7.2。有些方法需要 Synchronized ,是否有任何更常规的方法可以做到这一点,或者我必须遵循相同的 Java 方法,在方法之前放置 synchronized
关键字。
e.g : synchronized static def Map getMap(def fileName) { }
I'm working with Groovy 1.7.2. There are methods which needs to be Synchronized , is there any groovier way of doing this or I have to follow same Java way of putting synchronized
keyword before method.
e.g : synchronized static def Map getMap(def fileName) { }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您可以升级到 Groovy 1.7.3,则可以使用
Synchronized
AST 转换。您可以在实例和静态方法上使用注释。该注释将在您的类中创建一个锁变量(或者您可以使用现有变量),并且代码在该锁变量上同步。使用
synchronized
块应该优先于将关键字添加到方法中。如果您在方法上使用synchronized
关键字,则在this
上进行同步,这意味着想要访问类中任何方法的所有其他线程都必须等待,直到锁定又免费了。If you can upgrade to Groovy 1.7.3 you can use the
Synchronized
AST transformation instead. You can use the annotation on instance and static methods. The annotation will create a lock variable in your class (or you can use an existing variable) and the code is synchronized on that lock variable.The usage of a
synchronized
block should be preferred over adding the keyword to the method. If you use thesynchronized
keyword on the method you synchronize onthis
which means that all other threads that want to access any of the methods in your class have to wait until the lock is free again.从Groovy 1.7.3开始,我们有了一个新的 AST 转换:@Synchronized
Since Groovy 1.7.3 we have a new AST transformation: @Synchronized