问答详情
源自:2-5 Java线程-隋唐演义实战开发---关键先生

如果把keepRunning=false放在 程咬金大杀四方之后 join怎么理解?

join是指让其他线程等待当前线程终止。
如果

Thread k3 = new keyThread();//程咬金
k3.start();
k3.join();
隋军.keepRunning = false;
民兵.keepRunning = false;

这么写,随军冲锋和民兵冲锋会贯穿在程咬金的活动中间,看不出来join的效果啊

提问者:Goldberg 2016-04-26 12:42

个回答

  • meersun
    2016-04-26 19:07:23
    已采纳

    在A线程中调用了B线程的join方法,意思是直到线程A执行完毕后才会执行线程B,所以这里的join只对舞台线程起作用。对起义军和隋军线程,程咬金的join方法根本不起作用。我试了下,把keepRunning设为false的语句注释掉,发现即使加上chengyaojin.join(),这两个线程也不会停止,会一直运行下去。

  • 宝宝涛涛
    2016-04-26 14:14:14

    我的理解是这里执行join方法的线程是stage线程,所以只有stage线程会停止,等待程咬金线程的完成,而因为stage线程的停止,keepRunning=false暂时不会执行,所以隋军和农民起义军两个线程不会停止