我有一个音频播放器,它使用 PipedOutputStream 来缓冲数据的输入,并使用 PipedInput 来实际播放。有时播放器会暂停,但仍有数据需要缓冲。如果缓冲区现在已满,写入线程将无限期地阻塞。
是否有快速替代方案,支持写入超时或其他解决方案?
最佳答案
spf4j 包含 PipedInput/OuputStream 的替代实现。我也遇到过同样的问题并已解决。
问题的根本原因是pipedinputstream每次在read方法中都会检查writer(从pipiedoutputstream调用write的线程)的活跃度。 因此,写入器提前完成,然后读取将抛出异常并完成读取循环,并保留未读数据
关于java - Piped-/InputOutputStream 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620064/