如果我的Java程序要在使用線程不同時間執行多個Perl腳本在不同的時間執行一些Perl腳本。是否每個線程都有自己的ProcessBuilder
和Process
對象的副本?在一個Java程序
我在想,線程均能共享的ProcessBuilder但是,我不是太有把握。
如果我的Java程序要在使用線程不同時間執行多個Perl腳本在不同的時間執行一些Perl腳本。是否每個線程都有自己的ProcessBuilder
和Process
對象的副本?在一個Java程序
我在想,線程均能共享的ProcessBuilder但是,我不是太有把握。
如果ProcessBuilder
的所有參數都是一樣的(即您隨時撥打使用相同的參數相同的腳本),你可以使用在所有的線程在同一ProcessBuilder
,只需要確保它已正確發佈到這些線程。
通常情況下,如果您在創建並設置ProcessBuilder
之後開始線程,則無問題。
然而,如果不同的線程需要進行更改ProcessBuilder
(或者,如果你線程已啓動後進行更改建設者),你需要將這些更改同步 - CF the javadoc:
請注意,這個類是不同步。如果多個線程同時訪問一個
ProcessBuilder
實例和線程中的至少一個修改屬性中的一個結構,它必須被外部同步。
在這種情況下,每個線程使用一個實例可能更容易。
相關的http://stackoverflow.com/questions/17298717/can-a-thread-in-java-monitor-processes-that-it-starts – Gray