Java 当线程A死亡时,线程B在线程A内部产生的行为
我希望在主线程释放资源时执行线程 我有主线Java 当线程A死亡时,线程B在线程A内部产生的行为,java,multithreading,Java,Multithreading,我希望在主线程释放资源时执行线程 我有主线 Thread mainThread = new Thread(() -> { //do things doAction(); //do other things }); 方法doAction()看起来像 public void doAction(){ Thread insideThread = new Thread(() -> { //do something }); insideT
Thread mainThread = new Thread(() -> {
//do things
doAction();
//do other things
});
方法doAction()
看起来像
public void doAction(){
Thread insideThread = new Thread(() -> {
//do something
});
insideThread.start();
}
现在看来,insideThread
是在运行main线程时执行的
当主线程
死亡或释放时,内部线程
会发生什么情况
我希望在主线程死亡或释放时启动insideThread
。简单的解决方案:将doAction()
更改为返回它正在创建的线程;这样,调用代码就可以在该线程上调用start();像这样:
public Thread doAction(){
Thread insideThread = new Thread(() -> {
//do something
});
return insideThread;
}
当然,您可以将该方法重命名为prepareAction()之类的名称,以表明它本身不“做”事情
编辑:这是实现您的需求的一个选项;但核心问题是:不管该方法是否返回值;或者(例如)设置一些字段-要点是:如果您想控制另一个线程M中的线程T,那么M需要对该线程T的引用。这里没有魔法,任何对象只能“管理”它以某种方式知道的其他对象 我喜欢这个答案,因为代码可能早于任务,但我建议添加一个async/await和Tasks示例,因为这是处理上述问题的更现代的方法。@RagingCain谢谢;听起来是个好主意;但我不确定我今天是否到了那里。请随意编辑和改进我的答案。现在我想知道,提到我是一名选民是否会像受贿未遂;-)