我正在编写类似于生产者 - 消费者问题的程序。这是我的主代码:终止前清理缓冲区
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