我希望在主线程释放资源时执行线程。
我有主线程
Thread mainThread = new Thread(() -> {
//do things
doAction();
//do other things
});
和方法doAction()
看起来像
public void doAction(){
Thread insideThread = new Thread(() -> {
//do something
});
insideThread.start();
}
现在它看起来insideThread
在mainThread
正在运行时执行。
当insideThread
死亡或被释放时mainThread
会发生什么?
我想在insideThread
死亡或释放时开始mainThread
。
答案 0 :(得分:3)
简单的解决方案:将doAction()
更改为返回它正在创建的主题;这样调用代码可以在该线程上调用 start();像这样:
public Thread doAction(){
Thread insideThread = new Thread(() -> {
//do something
});
return insideThread;
}
当然,您可以将该方法重命名为 prepareAction()之类的内容,以表示它不会"做"做"事物本身。
编辑:这是一个选项来实现您的要求;但核心问题是:无论该方法是否返回值;或者(例如)设置一些字段 - 关键是:如果你想从另一个线程M中控制一个线程T,那么M需要对该T的引用。这里没有任何魔法,任何对象只能"管理" 以某种方式知道的其他对象!