gpt4 book ai didi

java - 什么是线程安全的 ByteArrayOutputStream?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:53 26 4
gpt4 key购买 nike

我想从进程的输出和错误流中读取并将它们合并到一个文本流中。我的程序是常规的,读起来像这样:

def mergeStream = new ByteArrayOutputStream()
process.waitForProcessOutput(mergeStream, mergeStream)

问题是 ByteArrayOutputStream 不是线程安全的,waitForProcessOutput() 生成两个附加到 mergeStream 的线程。有没有我可以使用的线程安全变体?您还建议我如何控制对 mergeStream 的访问?看起来在实践中字符有时会被此实现删除。

最佳答案

如果 process.waitForProcessOutput()OutputStream 作为参数,您可以简单地使用 OutputStream 的自定义实现,它具有其所有方法同步,并委托(delegate)给包装的 ByteArrayOutputStream 的相应方法。就像 Collections.synchronizedList() 将另一个 List 包装成一个同步的 List 代理。

编辑:

也就是说,阅读 ByteArrayOutputStream 的源代码,它的所有方法都已经同步,因此它已经是线程安全的。您的错误可能来自其他地方。

关于java - 什么是线程安全的 ByteArrayOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com