【问题标题】:Is there a Groovy way of making a method synchronized?是否有使方法同步的 Groovy 方法?
【发布时间】:2011-10-22 05:12:48
【问题描述】:

我正在使用 Groovy 1.7.2。有些方法需要同步,有没有更常规的方法可以做到这一点,或者我必须遵循相同的 Java 方法将 synchronized 关键字放在方法之前。

e.g : synchronized static def  Map getMap(def fileName) { }

【问题讨论】:

    标签: groovy


    【解决方案1】:

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

    应该优先使用synchronized 块而不是向方法中添加关键字。如果在 this 上同步的方法上使用 synchronized 关键字,这意味着所有其他想要访问类中任何方法的线程都必须等到锁再次释放。

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

    【讨论】:

    • 暂时没有升级计划,但提供的信息肯定很有帮助,这意味着在groovy 1.7.2中我可以使用java同步样式,
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2012-03-20
      • 1970-01-01
      • 2010-11-04
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      相关资源
      最近更新 更多