我正在編寫類似於生產者 - 消費者問題的程序。這是我的主代碼:終止前清理緩衝區
public class PipeProcessor {
private volatile boolean close = false;
Pipe pipe;
Output out;
public PipeProcessor(Pipe pipe)
{
this.pipe = pipe;
}
public void run()
{
while(!close)
{
out.output(pipe.get());
}
while(pipe.size() > 0)
out.output(pipe.get());
out.close();
}
public void close()
{
close = true;
}
}
管道是ArrayBlockingQueue的包裝並充當緩衝區。輸出是一個將緩衝區中的元素輸出的類。
我想確保PipeProcessor乾淨地終止,即當它被髮信號關閉時,它會清除緩衝區。由於關閉鉤子調用close()方法,所以我確定處理器關閉時緩衝區沒有被填充, 這是正確的方法嗎?謝謝。
因爲我想在關閉程序之前輸出緩衝區中的所有剩餘元素,而不是丟棄它們。 – 2009-12-26 10:10:05