为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 join() /wait() /notify 组合以特定顺序结束线程?

如何使用 join() /wait() /notify 组合以特定顺序结束线程?

慕标琳琳 2021-10-20 15:52:16
假设我有 3 个线程实现了 Runnable 接口,并且我已经使用以下语句启动了它们。t1.start();t2.start(); t3.start();有没有办法使用join(), wait(),notify()组合使线程按 t3 , t2, t1 的顺序结束?
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

不,线程将根据其run()方法实现内部发生的情况终止。如果您只是获得一个当前正在运行的线程而无法访问它正在执行的代码,则无法强制它终止(除了调用stop()or destroy(),这两个都已弃用且不应使用)。


但是,如果您可以编写这些线程正在运行的代码,那就真的很简单了:


Thread t3 = new Thread(() -> { 

    System.out.println("Thread 3 terminating..."); 

});


Thread t2 = new Thread(() -> {

    try { t3.join(); } catch(InterruptedException e) {}; 

    System.out.println("Thread 2 terminating..."); 

});


Thread t1 = new Thread(() -> {

    try { t2.join(); } catch(InterruptedException e) {}; 

    System.out.println("Thread 1 terminating..."); 

});


t1.start();

t2.start(); 

t3.start();


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信