2

如果我的 java 程序想要使用线程在不同时间执行多个 perl 脚本。每个线程都应该有自己的 aProcessBuilderProcessobjects 的副本吗?

我在想线程都可以共享 ProcessBuilder 但是,我不太确定。

4

1 回答 1

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

    通常,如果您在创建和设置之后ProcessBuilder启动线程,您会没事的。

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

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

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

于 2013-06-25T16:38:00.007 回答