所以我试图将涉及写入和读取磁盘的操作移动到只写入管道流。这是旧系统,它在两个线程上运行:
写作:
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, new File(name));
读:
Wave wave = new Wave(new File(name));
这是新系统:
写作:
PipedInputStream pipedInputStream = new PipedInputStream();
PipedOutputStream pipedOutputStream = new PipedOutputStream();
pipedOutputStream.connect(pipedInputStream);
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, pipedOutputStream);
ReadingThread.queue.add(pipedInputStream);
读:
Wave wave = new Wave(new BufferedInputStream(queue.poll());
旧系统正常运行,数据通过,但在新系统中数据无法到达另一端。 Wave可以通过文件或输入流初始化。