【发布时间】:2011-02-20 01:48:58
【问题描述】:
我需要一个缓冲的char 流,我在一个线程中写入该流,并在另一个线程中从中读取。 Right now 我正在使用 PipedReader 和 PipedWriter,但是这些类会导致性能问题:当 PipedReader 的内部缓冲区为空时,它会执行 wait(1000),这会导致我的应用程序明显滞后。
是否会有一些库与 PipedReader/PipedWriter 做同样的事情,但性能更好?还是我必须实现自己的轮子?
【问题讨论】:
-
这可能不是你想要的,但是你的写线程能在写完东西后通知读线程吗?并且阅读线程会在
ready()为真时继续阅读,然后在不为真时休眠? -
您能告诉我们您的代码吗?
wait(1000)不应该是问题,因为作者在写东西时会通知读者。然后读者从他的 wait() 中逃脱。 -
谢谢,菲尔。我现在不在家,所以我无法测试它,但根据源代码 PipedWriter.flush() 似乎可以通知读者。我今天晚些时候试试。
标签: java data-structures