我正在用Java创建一个程序,我在其中调用另一个要执行的程序。
在特定时间,假设在2ms之后我想暂停它并运行另一个程序,在执行第二个程序2ms后,我希望第一个程序在暂停时执行。我有什么方法可以用Java做到这一点吗?
答案 0 :(得分:0)
您说您正在使用Runtime.getRuntime().exec("java process1")
当你使用Runtime.getRuntime().exec
时,你必须从stdout / stderr流中读取,否则其他程序可能会挂起。许多其他Stackoverflow问题都提到了这一点;这是一个共同话题。
如果这是一项教育任务,即使你在这种特殊情况下并不需要,也应该以“正确的方式”做到这一点。
如果您想同步执行此操作,您只需要join
要创建的2个线程来读取stdout和stderr。
实际上将stderr重定向到stdout可能更容易,然后根本不需要多个线程,你只需从当前线程中的进程'stdout读取。
P.S。现在推荐ProcessBuilder
,它应该优于Runtime.exec
。