Java プログラムが、スレッドを使用してさまざまな時間に複数の perl スクリプトを実行したい場合。ProcessBuilder
各スレッドには、Process
オブジェクトの独自のコピーが必要ですか?
スレッドはすべて ProcessBuilder を共有できると考えていましたが、それについてはよくわかりません。
Java プログラムが、スレッドを使用してさまざまな時間に複数の perl スクリプトを実行したい場合。ProcessBuilder
各スレッドには、Process
オブジェクトの独自のコピーが必要ですか?
スレッドはすべて ProcessBuilder を共有できると考えていましたが、それについてはよくわかりません。
のすべてのパラメータProcessBuilder
が常に同じである場合 (つまり、常に同じ引数で同じスクリプトを呼び出す場合)、ProcessBuilder
すべてのスレッドで同じものを使用でき、それらのスレッドに適切に公開されていることを確認するだけで済みます。
通常、スレッドを作成してセットアップした後にスレッドを開始すれば問題ありませProcessBuilder
ん。
ただし、異なるスレッドが変更を加える必要がある場合 (または、スレッドの開始ProcessBuilder
後にビルダーを変更する場合)、それらの変更を同期する必要があります - javadoc を参照してください:
このクラスは同期されていないことに注意してください。複数のスレッドがインスタンスに同時にアクセスし
ProcessBuilder
、少なくとも 1 つのスレッドが属性の 1 つを構造的に変更する場合は、外部で同期する必要があります。
その場合、スレッドごとに 1 つのインスタンスを使用する方がおそらく簡単です。