如果run()没有完成并从外面调用,我需要先完成运行的shread。
public class EnvTime extends Thread {
public void run() {
long step = 2000 / benvelope1.length;
while (!finished) {
for (int i = 0; i < benvelope1.length; i++) {
envOut = benvelope1[i];
try {
Thread.sleep(step);
} catch (InterruptedException benvelope1) {
benvelope1.printStackTrace();
}
}
}
}
}
所以我用另一种方法调用此代码:
Env interpol;
interpol.interrupt(); //
interpol=new EnvTime();
interpol.start();
但这不起作用......
答案 0 :(得分:1)
目前尚不清楚你想要实现的目标,而是通过
来实现Env interpol;
interpol.interrupt(); //
你可能得到NullPointerException
。如果您希望代码到达
} catch (InterruptedException benvelope1) {
...
}
你需要确保该线程在try
- 块中,特别是当你中断它时,在Thread.sleep
方法中。
换句话说,在中断之前,你至少需要启动帖子。
答案 1 :(得分:0)
您应该在代码中的某处更改finished
。
像这样:
try {
Thread.sleep(step);
} catch (InterruptedException benvelope1) {
finished = true;
benvelope1.printStackTrace();
}
也许您还应该等待线程在启动新线程之前真正终止。使用join:
interpol.interrupt();
interpol.join();
interpol=new EnvTime();
interpol.start();