如果我的java程序想要使用线程在不同时间执行多个perl脚本。每个线程是否应该拥有自己的 ProcessBuilder 和 Process 对象副本?
我认为线程都可以共享 ProcessBuilder,但是我对此不太确定。
最佳答案
如果
ProcessBuilder
的所有参数始终相同(即,您始终使用相同的参数调用相同的脚本),则可以使用相同的ProcessBuilder
在所有线程中,只需要确保它正确发布到这些线程。通常,如果您在创建并设置
ProcessBuilder
之后启动线程,就可以了。如果不同的线程需要对
ProcessBuilder
进行更改(或者如果您在线程之后对构建器进行更改已启动),您将需要同步这些更改 - cf the javadoc :Note that this class is not synchronized. If multiple threads access a
ProcessBuilder
instance concurrently, and at least one of the threads modifies one of the attributes structurally, it must be synchronized externally.在这种情况下,每个线程使用一个实例可能会更容易。
关于java - 在一个java程序中不同时间执行多个perl脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302676/