小编Bas*_*ien的帖子

线程启动的运行进程不会破坏(Java)

启动多个线程并使每个exec()然后destroy()一个正在运行的java进程导致某些进程没有被销毁并且在程序退出后仍然运行.这是一些重现问题的代码.我注意到你启动的线程越多,进程就越多.而且,在destroy()之前睡眠越多,进程就越少.(我使用InfiniteLoop作为示例.任何正在运行的进程都可以解决问题.)

编辑:已经向Oracle报告了Bug,等待答案.随意分享有关该主题的任何知识/实验.

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();
}
Run Code Online (Sandbox Code Playgroud)

java multithreading process destroy

13
推荐指数
3
解决办法
2万
查看次数

标签 统计

destroy ×1

java ×1

multithreading ×1

process ×1