我有一个 JRuby 引擎,它评估一些脚本,如果需要超过 5 秒,我想关闭线程。我试过这样的事情:
class myThread extends Thread{
boolean allDone = false;
public void threadDone() {
allDone = true;
}
public void run() {
while(true) {
engine.eval(myScript);
if(allDone)
return;
}
}
(...)
th1 = new myThread();
th1.start();
try {
Thread.sleep(5000);
if(th1.isAlive())
th1.threadDone();
} catch(InterruptedException e) {}
if(th1.isAlive())
System.out.println("Still alive");
我也尝试用th1.stop()
or杀死线程,th1.interrupt()
但th1.isAlive()
方法返回的值总是true
.
我能做些什么?我想补充一点,myScript 可能是“while(1) do; end”,我不能等到它完成。所以我想阻止这样的脚本,如果它需要超过 5 秒就杀死线程。