gpt4 book ai didi

java - 终止前清理缓冲区

转载 作者:行者123 更新时间:2023-11-30 05:14:49 24 4
gpt4 key购买 nike

我正在编写一个类似于生产者-消费者问题的程序。这是我的主要代码:

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 的包装器并充当缓冲区。 Output 是一个类,它获取缓冲区中的元素并将其输出。

我想确保 PipeProcessor 干净地终止,即当它收到关闭信号时,它会清理缓冲区。由于 close() 方法是由关闭 Hook 调用的,因此我确保在处理器关闭时缓冲区不会被填充,这是正确的做法吗?谢谢。

最佳答案

看起来你的代码做了你想要它做的事情。如果你看一下你的命名,你可以让你的代码更容易理解,例如 boolean 值“close”可以被命名为“close”或“shuttingDown”,或者将其反转为“running”,这将导致代码更具可读性。

run() 中的 while 循环及其后面的行可以写为:

    while (running || pipe.size() > 0) {

out.output(pipe.get());
}

关于java - 终止前清理缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com