线程启动的运行进程不会破坏(Java)
2022-09-03 02:16:26
启动多个线程并让每个 exec() 然后销毁() 一个正在运行的 java 进程会导致某些进程未被销毁,并且在程序退出后仍在运行。下面是一些重现此问题的代码。我注意到您启动的线程越多,保持活动状态的进程就越多。在 destroy() 之前,睡眠时间越长,保持活动状态的进程就越少。(我以InfiniteLoop为例。任何正在运行的进程都可以做到这一点。
编辑:错误已报告给甲骨文,等待答案。随意分享有关该主题的任何知识/实验。
for(int i = 0; i < 100; i++)
{
new Thread(new Runnable()
{
public void run()
{
try
{
Process p = Runtime.getRuntime().exec(new String[]{"java", "InfiniteLoop"});
Thread.sleep(1);
p.destroy();
}catch(IOException | InterruptedException e){e.printStackTrace();}
}
}).start();
}