【发布时间】:2011-05-10 08:04:51
【问题描述】:
我有一个复杂的功能(优化),它可能会进入一个循环或者只是花费太多时间,并且允许的时间由用户设置。
因此,我试图在单独的线程中运行该函数,并在超过最大时间时停止它。我使用了类似下面的代码,但是它不起作用,所以
int timeMax = 2; //time in minutes
Thread Thread_Object = new Thread_Class(... args...);
try {
Thread_Object.start();
Thread_Object.join(timeMax*60*1000);
}
我认为我没有正确使用“加入”功能,或者它没有按照我的理解进行。有什么想法吗?
谢谢!
感谢您的回答,目前我在这里找到了更好的主意*。它可以工作,但它仍然使用已弃用的功能“停止”。新代码是:
Thread Thread_Object = new Thread_Class(... args...);
try {
int timeMax = 1;
Thread_Object.start();
Thread.currentThread().sleep( timeMax * 1000 );
if ( Thread_Object.isAlive() ) {
Thread_Object.stop();
Thread_Object.join();
}
}
catch (InterruptedException e) {
}
还不确定“加入”的作用,我得去看看书。
【问题讨论】:
-
不要使用
Thread.stop()。它会使共享数据处于不一致的状态。如果你不打算使用Timer,我建议你按照约翰五世所说的去做。
标签: java multithreading