1

我想做一些计算,但如果他们花了太多时间(比如 10 秒),我想停止它并显示当前的最佳结果。

是否可以在 Java 中使用它?我不想在每个函数中都写时间检查。

4

3 回答 3

2

按照建议使用Timer或使用多个线程。在您的主程序中,启动另一个计算线程。主线程在超时后休眠Thread.sleep并终止计算。

main thread +-------+---sleeping---termination----+
                    |                 |
another thread      +---calculation---+
于 2012-04-09T23:37:00.210 回答
1

您可以创建一个单独的线程,您可以从计算线程的开头开始,并在 10 秒后使用 Timer.sleep(int) 方法,将布尔值设置为 true。然后在计算线程中,if(finished) break;

于 2012-04-10T00:24:38.833 回答
-1

让另一个线程有一个循环,该循环每秒增加一个值,然后在 10 秒时退出。

public class counter extends Thread, implements Runnable{
 public void run()
{
 for(int index=0; index<10; index++)//Waits ten seconds
{
this.sleep(1000);//ms
}
System.exit(0);//Closes the application
}

不过,主线程仍然可以执行。要取消关闭,我想如果及时收到输入,您可以设置一个 volatile 布尔值,该布尔值设置为 true。

于 2012-04-09T23:36:17.330 回答