如果我的 java 程序想要使用线程在不同时间执行多个 perl 脚本。每个线程都应该有自己的 aProcessBuilder
和Process
objects 的副本吗?
我在想线程都可以共享 ProcessBuilder 但是,我不太确定。
如果我的 java 程序想要使用线程在不同时间执行多个 perl 脚本。每个线程都应该有自己的 aProcessBuilder
和Process
objects 的副本吗?
我在想线程都可以共享 ProcessBuilder 但是,我不太确定。
如果您的所有参数ProcessBuilder
始终相同(即您始终使用相同的参数调用相同的脚本),您可以在所有线程中使用相同的参数,ProcessBuilder
并且只需要确保它正确发布到这些线程。
通常,如果您在创建和设置之后ProcessBuilder
启动线程,您会没事的。
但是,如果不同的线程需要更改ProcessBuilder
(或者如果您在线程启动后对构建器进行更改),您将需要同步这些更改 - 参见javadoc:
请注意,此类不是同步的。如果多个线程
ProcessBuilder
同时访问一个实例,并且至少有一个线程在结构上修改了其中一个属性,则必须在外部进行同步。
在这种情况下,每个线程使用一个实例可能会更容易。