我有一个这样简单的方法:
public void foo(int runForHowLong) {
Motor.A.forward();
}
现在想要能够将参数传递给foo(),它设置了foo()运行时间的时间限制。就像我发送foo(2)一样,它运行2秒钟。
答案 0 :(得分:6)
您可以使用来自@Timeable
的AOP和jcabi-aspects注释(我是开发人员):
class Motor {
@Timeable(limit = 1, unit = TimeUnit.SECONDS)
void forward() {
// execution as usual
}
}
当达到时间限制时,你的线程将interrupted()
标志设置为true
,你的工作就是正确处理这种情况并停止执行。
答案 1 :(得分:1)
在Stackoverflow上查看这个问题:Run code for x seconds in Java?
与要求完全相同。
当我从您的问题中解释时,您希望该方法运行2分钟。为了实现这一点,你需要启动一个你控制2分钟的线程,然后停止线程。
答案 2 :(得分:-1)
TimeUnit
类提供了此方法所需的方法
请在此处查看:TimeUnit in JDK 6
答案 3 :(得分:-3)
如果您希望它运行两秒钟,您可以使用
Thread.sleep(2000)
。请注意,Thread.sleep(2000)
更像是一个
“建议”而不是“命令”;它不会为完全 2000运行
毫秒,由于JVM中的调度。它几乎可以
简化为大致 2000毫秒。
如果你想让它继续调用forward
2秒钟(这会导致很多函数调用),你会
需要使用某种计时器。