我有一个复杂的函数(优化),可能会进入循环或只是花费太多时间,并且允许的时间由用户设置。
因此,我试图在单独的线程中运行该函数,并在超过最大时间时停止它。我使用类似于下面的代码,但它不起作用,所以
int timeMax = 2; //time in minutes
Thread Thread_Object = new Thread_Class(... args...);
try {
Thread_Object.start();
Thread_Object.join(timeMax*60*1000);
}
我认为我没有正确使用“join”功能,或者它没有按照我的理解进行操作。任何想法?
Thanks!
感谢您的回答,目前我在这里找到了更好的想法*。它可以工作,但仍然使用已弃用的“停止”功能。新代码是:
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) {
}
还不太清楚“join”的作用,我得去看看书。
- java 脚本 API - 如何停止评估 https://stackoverflow.com/questions/1601246/java-scripting-api-how-to-stop-the-evaluation/1601465#1601465
我建议你使用Timer http://download.oracle.com/javase/6/docs/api/java/util/Timer.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)