【发布时间】:2020-01-18 15:59:03
【问题描述】:
我的问题是:
ProcessBuilder 环境变量或工作目录的更改是否对先前生成的进程有影响?在 Debian 9 和 Windows 7 上的简单测试表明对已经创建的进程没有影响,但我想确定这是预期的行为,最好有一些官方文档的链接或一些关于 ProcessBuilder 内部的解释,这使得该声明变得不必要。
详情:
我在并发系统中使用 Process Builder 来生成具有不同环境变量和来自多个线程的工作目录的同一进程的实例。
我目前正在使用 ProcessBuilderControler 类,该类通过同步对 PB 的访问来避免典型的并发问题,以避免在 T1 和 T2 尝试同时生成进程时出现以下问题:
- T1 使用值“/dir”设置 PB 的工作目录
- T2 将 PB 的工作目录设置为“/dir2”
- T1 执行 PB 的 start()
- T2 执行 PB 的 start()
在这种情况下,T1 和 T2 进程会生成以 /dir2 作为工作目录的脚本。
我担心的是,如果即使在进程生成后更改 pb 目录,该进程也会获得最新值。根据我强制描述情况的测试,在 Windows 或 linux 中情况并非如此..
【问题讨论】:
-
来自the documentation:“修改进程构建器的属性将影响随后由该对象的
start()方法启动的进程,但不会影响之前启动的进程或Java 进程本身。”
标签: java process processbuilder