我正在寻找一种在java中执行指定时间的方法/函数的简单方法。有点像这样:
for(3 secs){
x();
}
这种方式应该易于实施,并且应该具有良好的性能。
答案 0 :(得分:4)
long startTime = System.currentTimeMillis();
while(System.currentTimeMillis() - startTime <= 3000){
x();
}
对于Aaron的答案, +1,使用long finishTime = System.currentTimeMillis() + 3000
代替,在循环外部移动加法/减法,只留下效率/性能的比较。
但是请注意,一旦输入x(),并且x()需要一段时间才能运行,整个循环可能会运行超过所需时间。如果x()是长度,您可能还想在其中添加对停止条件的检查。
答案 1 :(得分:3)
我会做
long finishTime = System.currentTimeMillis()+3000;
while(System.currentTimeMillis() <= finishTime){
x();
}
将算法移出循环,以提高效率/性能
答案 2 :(得分:1)
void run ( Runnable task , long milliseconds ) throws Exception
{
new Thread ( )
{
public void run ( )
{
while ( true )
{
task . run ( ) ;
}
}
} . start ( ) ;
Thread . sleep ( milliseconds ) ;
System . exit ( 0 ) ;
}
即使任务花费的时间超过分配的时间,这也会有效。