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



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

public void foo(int runForHowLong) {
    Motor.A.forward();
}

现在我们希望能够传递一个参数给foo(),它设置了foo()运行的时间限制。比如我发送foo(2),它会运行2秒

您可以使用AOP和来自jcabi-aspects(我是一名开发人员)的@Timeable注释:

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

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

看看Stackoverflow上的这个问题:在Java中运行代码x秒?

与要求完全相同。

我从你的问题中理解,你想让方法运行2分钟。要做到这一点,你需要启动一个线程,你控制2分钟,然后停止线程。

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

  • 如果你想让它运行两秒钟,你可以使用Thread.sleep(2000)。注意,Thread.sleep(2000)更像是一个"建议"不如"命令";它不会在 2000下运行毫秒,由于在JVM中进行调度。很有可能简化为大致 2000毫秒。

  • 如果您希望它继续调用forward 2秒(这将导致对该函数的多次调用),您可以这样做

相关内容

  • 没有找到相关文章

最新更新