替代 Piped-/InputOutputStream

Alternative to Piped-/InputOutputStream

我有一个音频播放器,它使用 PipedOutputStream 缓冲数据输入,并使用 PipedInput 进行实际播放。有时播放器暂停,但仍有数据需要缓冲。如果缓冲区现在已满,写入线程将无限期阻塞。

是否有支持写入超时或其他解决方案的快速替代方案?

有 spf4j,其中包含 PipedInput/OuputStream 的替代实现。我一直遇到同样的问题并已解决。

问题的根本原因是pipedinputstream每次在read方法中检查writer(从pipiedoutputstream调用write的线程)的活跃度。 所以作者提前完成,然后读取会抛出异常并完成读取循环,剩余未读数据