Runtime.exec()

Javaから別プロセスを起動する必要になったのですが、
例のごとく、単純にRuntime.exec()を使うだけでは
うまくいきません。
起動するプロセスはコンソールアプリで、stdin/stdout/stderr
をうまくつないで、個々のストリームを別スレッドで流してやる
必要があるのです。
大雑把な処理はわかるのですが、この手のプログラムは
排他制御が必要だったり、スレッドの同期が必要だったり、
かなり厄介です。
で、既存のソフトの中から該当する個所を探して参考にすることにしました。
JMichelle にあるのは知っていたのですが、該当部分を抽出するのは大変です。
簡単に使える形になっていません。
が、なんとか抽出に成功。
その後に気がついたのですが、Ant にも同様のソースがあるハズ。
Antのソースをダウンロードし、該当個所を見つけて見比べてみると、
いくつか違うところがありますね。
どっちがいいのだろう。
実績としてはAntの勝ちだなぁ〜。
まだよく理解していない。
org.apache.tools.ant.taskdefs.ExecuteStreamHandler
org.apache.tools.ant.taskdefs.StreamPumper