微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决 Groovy 意外输入:@TimedInterrupt

如何解决如何解决 Groovy 意外输入:@TimedInterrupt

我试图通过导入 groovy 类 TimedInterrupt 来执行以下 groovy 脚本,不幸的是无法理解编译错误背后的原因。我参考了 groovyOfficial 文档,也查看了一些资源 here,但未能取得重大进展。我非常感谢 groovy 专家为解决此问题提供的任何宝贵意见。

import groovy.transform.TimedInterrupt
import java.util.concurrent.TimeUnit

def buildInterrupt() {
    @TimedInterrupt(value = 3L,unit = TimeUnit.MICROSECONDS)
}

def timeout_method() {
    println 'This is for testing: '
}
 
buildInterrupt() //this invocation is necessary in the long run
time_method()

Post Execution
1 compilation error:

Unexpected input: '@TimedInterrupt(value = 3L,unit = TimeUnit.MICROSECONDS)\n}' at line: 6,column: 1

我需要定时中断生效,预期输出低于

Exception thrown

java.util.concurrent.TimeoutException: Execution timed out after 3 microseconds. Start time: Thu Mar 14 12:28:09 IST 2020
at timeout_method.run(timeout_method.groovy)

谢谢

解决方法

我相信您遇到编译问题的原因是注释(在本例中为 <div id="testDiv"> <ul> <li>Testing</li> <li>Testing</li> <li>Testing</li> <li>This is very long text</li> <li>Testing</li> <li>Testing</li> <li>Testing</li> </ul> </div>)需要注释类、成员变量、方法等。在您的情况下,注释应用于一个“没有任何注释”的位置。

以下代码:

TimedInterrupt

作品和版画:

import groovy.transform.TimedInterrupt
import java.util.concurrent.TimeUnit

@TimedInterrupt(value = 500L,unit = TimeUnit.MILLISECONDS)
def somethingToAnnotate = 0

def methodA() {
  // sleep 100 ms
  100.times { Thread.sleep(1) }
  println 'hello from method a'
}

10.times { 
  methodA()
}

此处注释应用于变量。

需要注意的是,在groovy脚本中,如果你注解一个方法,超时是在方法定义的时候开始的,而不是在执行的时候。换句话说,即使方法从未运行过,注释一个方法并运行脚本也会启动超时。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。