java - Java 中的管道或交换输入/输出流

标签 java multithreading inputstream swap outputstream

分析器类的列表,用于分析输入流的依赖关系,更改一些内容并将其写入输出流:

public Set<Dependency> analyse(InputStream i, OutputStream o);

分析器应该像这样链接起来:

for(DocumentAnalyser analyser : a) {
 o.getDependencies().addAll(analyser.analyse(in, out));
 in = new ByteArrayInputStream(out.toByteArray());
} 

现在,我在一个以in为最终决定的环境中工作。

  1. 是否有更好的方法来“链接”流?
  2. 使用 ByteArrayInputStream 从“out”到“in”的“交换”操作成本昂贵吗?
  3. 如何处理“in”是最终的问题?

最佳答案

  1. 使用辅助线程和 java.io.PipedInputStream/java.io.PipedOutputStream 对。
  2. 它可能在大流上表现不佳。
  3. 正如另一个响应中所说,使用局部非最终变量来进行链接

请注意,通过应用 1,您无需担心 2,因为您实际上是在管道传输流。

关于java - Java 中的管道或交换输入/输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225762/

相关文章:

java - 需要编码的 xml 值吗?

java - 反射有什么问题?

java - Android pdf maker 代码错误

c - 如何确保函数中创建的所有线程在同一函数终止之前返回?

Python的多线程代码比单线程慢

java - 使用 Spring 的 RestTemplate 将文件作为 block 发送

Java - 客户端的两个线程可以使用来自服务器的相同输入流吗?

java - canvas.drawCircle 不显示在 for 循环中

java - 将新元素放入 arrayList 中,而不是放在其头部

java - 在java中解析文本文件(大数据集)