有没有一种 Groovy 方法可以使方法同步?

发布于 2024-12-11 07:58:56 字数 209 浏览 0 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

漫雪独思 2024-12-18 07:58:56

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

使用synchronized 块应该优先于将关键字添加到方法中。如果您在方法上使用 synchronized 关键字,则在 this 上进行同步,这意味着想要访问类中任何方法的所有其他线程都必须等待,直到锁定又免费了。

import groovy.transform.Synchronized

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

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 the synchronized keyword on the method you synchronize on this 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.

import groovy.transform.Synchronized

class YourClass {
    @Synchronized
    static Map getMap(def fileName) {
        ...
    }
}
七七 2024-12-18 07:58:56

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

Since Groovy 1.7.3 we have a new AST transformation: @Synchronized

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文