我想做一些计算,但如果他们花了太多时间(比如 10 秒),我想停止它并显示当前的最佳结果。
是否可以在 Java 中使用它?我不想在每个函数中都写时间检查。
按照建议使用Timer
或使用多个线程。在您的主程序中,启动另一个计算线程。主线程在超时后休眠Thread.sleep
并终止计算。
main thread +-------+---sleeping---termination----+
| |
another thread +---calculation---+
您可以创建一个单独的线程,您可以从计算线程的开头开始,并在 10 秒后使用 Timer.sleep(int) 方法,将布尔值设置为 true。然后在计算线程中,if(finished) break;
让另一个线程有一个循环,该循环每秒增加一个值,然后在 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。