私は、プロセスの出力とエラーストリームから読み込み、それらを1つのテキストストリームにマージしたいと思っています。私のプログラムは、グルーヴィーであり、このように読み取りますスレッドセーフなByteArrayOutputStreamとは何ですか?
def mergeStream = new ByteArrayOutputStream()
process.waitForProcessOutput(mergeStream, mergeStream)
問題はByteArrayOutputStreamが安全とwaitForProcessOutputスレッドされていないということです()mergeStreamに追加二つのスレッドを生成します。私が使用できるスレッドセーフなバリアントはありますか?どうすればmergeStreamへのアクセスを制御することをお勧めしますか?実際には、この実装では文字が破棄されることがあります。
ProcessBuilderのredirectErrorStreamについて考えましたか? – artbristol
はい、*スレッドセーフです。あるいは、そのすべてのメソッドが同期されています。そして、 'ProcessBuilder.redirectErrorStream()'は質問全体を冗長にします。本当の質問ではありません。 – EJP
@EJP - あなたが答えを知っているならば、それは本当の質問ではありません。そうでなければ、それは素晴らしい質問です! javadocは同期については何も言わない - AFAICT、あなたはそれを見つけるためにソースを掘り下げなければならず、あなたはコメントしていないので、困ったことはないだろう(スレッドセーフではないと仮定した。 –