当线程A死亡时,线程B内部产生的线程B的行为

时间:2017-01-11 13:03:27

标签: java multithreading

我希望在主线程释放资源时执行线程。

我有主线程

Thread mainThread = new Thread(() -> {
    //do things
    doAction();
    //do other things
});

和方法doAction()看起来像

public void doAction(){
   Thread insideThread = new Thread(() -> {
      //do something
   });

   insideThread.start();
}

现在它看起来insideThreadmainThread正在运行时执行。

insideThread死亡或被释放时mainThread会发生什么?

我想在insideThread死亡或释放时开始mainThread

1 个答案:

答案 0 :(得分:3)

简单的解决方案:将doAction()更改为返回它正在创建的主题;这样调用代码可以在该线程上调用 start();像这样:

public Thread doAction(){
  Thread insideThread = new Thread(() -> {
    //do something
  });

  return insideThread;
}

当然,您可以将该方法重命名为 prepareAction()之类的内容,以表示它不会"做"做"事物本身。

编辑:这是一个选项来实现您的要求;但核心问题是:无论该方法是否返回值;或者(例如)设置一些字段 - 关键是:如果你想从另一个线程M中控制一个线程T,那么M需要对该T的引用。这里没有任何魔法,任何对象只能"管理" 以某种方式知道的其他对象!