【发布时间】:2010-02-23 19:51:51
【问题描述】:
当我要终止一个循环线程时,我需要做一些清理工作。比如保存一个缓冲区,以便稍后继续。
PseudoCode:
private class CalculatePI(Byte[] resume) implements Runnable{
public void Run(){
while(true){
resume=resumeCalculating(resume);
}
}
}
Thread calculator= new Thread(new CalculatePI(Byte[] resume));
Thread.sleep(200);
//And now I want to kill calculator
那么最好的实现方式是什么?
- 使用标志:但问题是如果 resumeCalculating() 需要(编辑:很长时间)
forever才能结束? - 在计算器中加入异常,如何?
- 我可以使用事件监听器之类的吗?我以为它们是用于 GUI 的
- 停下来? Class Thread 包含某种解构器,当线程终止时会调用它,我可以在那里进行处理吗?
所有者编辑:
我知道我可以使用旗帜。但是考虑一下:
public void Run(){
while(true){
resume=calculate_stepone(resume); //takes one minute
resume=calculate_steptwo(resume); //takes two minutes
resume=calculate_stepthree(resume); //takes three minutes
resume=calculate_steplast(resume); //takes four minutes
}
}
在每行之间添加if(flag) saveResultsAndExit(); 是实用还是漂亮?
我只想把处理了一半的结果扔掉,保存之前的结果。
【问题讨论】:
标签: java multithreading terminate