设置方法的时间限制/超时

Las*_*sen 4 java methods timeout

我有一个像这样的简单方法:

public void foo(int runForHowLong) {
    Motor.A.forward();
}
Run Code Online (Sandbox Code Playgroud)

现在想要能够将参数传递给foo(),它设置了foo()运行时间的时间限制.就像我发送foo(2)一样,它运行2秒钟.

yeg*_*256 6

你可以使用AOP和jcabi-aspects@Timeable注释(我是开发人员):

class Motor {
  @Timeable(limit = 1, unit = TimeUnit.SECONDS)
  void forward() {
    // execution as usual
  }
}
Run Code Online (Sandbox Code Playgroud)

当达到时间限制时,您的线程将interrupted()设置为标志,true并且您的工作是正确处理此情况并停止执行.


Kou*_*avi -1

该类TimeUnit提供了所需的方法。
在这里查看:JDK 6 中的 TimeUnit