2

Java プログラムが、スレッドを使用してさまざまな時間に複数の perl スクリプトを実行したい場合。ProcessBuilder各スレッドには、Processオブジェクトの独自のコピーが必要ですか?

スレッドはすべて ProcessBuilder を共有できると考えていましたが、それについてはよくわかりません。

4

1 に答える 1

2
  • のすべてのパラメータProcessBuilderが常に同じである場合 (つまり、常に同じ引数で同じスクリプトを呼び出す場合)、ProcessBuilderすべてのスレッドで同じものを使用でき、それらのスレッドに適切に公開されていることを確認するだけで済みます。

    通常、スレッドを作成してセットアップしたにスレッドを開始すれば問題ありませProcessBuilderん。

  • ただし、異なるスレッドが変更を加える必要がある場合 (または、スレッドの開始ProcessBuilderにビルダーを変更する場合)、それらの変更を同期する必要があります - javadoc を参照してください:

    このクラスは同期されていないことに注意してください。複数のスレッドがインスタンスに同時にアクセスしProcessBuilder、少なくとも 1 つのスレッドが属性の 1 つを構造的に変更する場合は、外部で同期する必要があります。

    その場合、スレッドごとに 1 つのインスタンスを使用する方がおそらく簡単です。

于 2013-06-25T16:38:00.007 に答える