【问题标题】:Executing several perl scripts at different times in one java program在一个 java 程序中在不同时间执行多个 perl 脚本
【发布时间】:2013-06-25 16:28:04
【问题描述】:

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

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

【问题讨论】:

标签: java multithreading process processbuilder


【解决方案1】:
  • 如果您的ProcessBuilder 的所有参数始终相同(即您始终使用相同的参数调用相同的脚本),您可以在所有线程中使用相同的ProcessBuilder,并且只需要确保它被正确地发布到那些线程。

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

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

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

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

【讨论】:

  • 是的,这些线程正在调用不同的脚本,所以看起来我将使用每个线程一个实例。
  • @rage 它可能会让你的生活更轻松。
猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2013-05-05
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多