2013-06-25 24 views
2

如果我的Java程序要在使用線程不同時間執行多個Perl腳本在不同的時間執行一些Perl腳本。是否每個線程都有自己的ProcessBuilderProcess對象的副本?在一個Java程序

我在想,線程均能共享的ProcessBuilder但是,我不是太有把握。

+0

相關的http://stackoverflow.com/questions/17298717/can-a-thread-in-java-monitor-processes-that-it-starts – Gray

回答

2
  • 如果ProcessBuilder的所有參數都是一樣的(即您隨時撥打使用相同的參數相同的腳本),你可以使用在所有的線程在同一ProcessBuilder,只需要確保它已正確發佈到這些線程。

    通常情況下,如果您在創建並設置ProcessBuilder之後開始線程,則無問題。

  • 然而,如果不同的線程需要進行更改ProcessBuilder(或者,如果你線程已啓動後進行更改建設者),你需要將這些更改同步 - CF the javadoc

    請注意,這個類是不同步。如果多個線程同時訪問一個ProcessBuilder實例和線程中的至少一個修改屬性中的一個結構,它必須外部同步。

    在這種情況下,每個線程使用一個實例可能更容易。

+0

啊這些線程調用不同的腳本,以便看起來像我將以每個線程一個實例進行。 – rage

+0

@rage可能會讓你的生活更輕鬆。 – assylias