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

标签 java multithreading process processbuilder

如果我的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/

相关文章:

java - 不管 CyclicBarrier 有一个线程停止得太早

c++ - 来自发布的调试差异的结果

java - 我不知道如何用Java实现接口(interface)

java - Android:java.lang.NullPointerException:尝试调用虚拟方法'double android.location.Location.getLatitude()

Java线程执行器永远不会关闭?

c# - 如何减少生成的事件数

java - Android ArrayList,如何获取ListView的onClick

java - 构建一次并部署到多个环境

c - 读取另一个进程的环境变量

c++ - 如何让 2 个应用程序在 linux 中相互运行?