在一个java程序中的不同时间执行几个perl脚本

时间:2013-06-25 16:28:04

标签: java multithreading process processbuilder

如果我的java程序想要使用线程在不同时间执行多个perl脚本。每个线程是否应该拥有自己的ProcessBuilderProcess对象的副本?

我当时认为线程可以共享ProcessBuilder但是,我不太确定。

1 个答案:

答案 0 :(得分:2)

  • 如果ProcessBuilder的所有参数始终相同(即您总是使用相同的参数调用相同的脚本),则可以使用相同的{{1在所有线程中,只需要确保它正确发布到这些线程。

    通常情况下,如果您在创建并设置ProcessBuilder之后启动线程,那么您将没事。

  • 但是,如果不同的线程需要对ProcessBuilder 进行更改(或者在线程启动后更改构建器) ),您需要同步这些更改 - 参见the javadoc

      

    请注意,此类未同步。如果多个线程同时访问ProcessBuilder实例,并且至少有一个线程在结构上修改了其中一个属性,则必须在外部进行同步。

    在这种情况下,每个线程使用一个实例可能会更容易。