我正在编写一个类似于生产者-消费者问题的程序。这是我的主要代码:
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;
}
}
Pipe 是 ArrayBlockingQueue 的包装器并充当缓冲区。输出是一个类,它在缓冲区中获取一个元素并输出它。
我想确保 PipeProcessor 干净地终止,即当它发出关闭信号时,它会清理缓冲区。由于 close() 方法由关闭挂钩调用,我确保在处理器关闭时缓冲区没有被填充,这是正确的方法吗?谢谢你。