join是指让其他线程等待当前线程终止。
如果
Thread k3 = new keyThread();//程咬金
k3.start();
k3.join();
隋军.keepRunning = false;
民兵.keepRunning = false;
这么写,随军冲锋和民兵冲锋会贯穿在程咬金的活动中间,看不出来join的效果啊
在A线程中调用了B线程的join方法,意思是直到线程A执行完毕后才会执行线程B,所以这里的join只对舞台线程起作用。对起义军和隋军线程,程咬金的join方法根本不起作用。我试了下,把keepRunning设为false的语句注释掉,发现即使加上chengyaojin.join(),这两个线程也不会停止,会一直运行下去。
我的理解是这里执行join方法的线程是stage线程,所以只有stage线程会停止,等待程咬金线程的完成,而因为stage线程的停止,keepRunning=false暂时不会执行,所以隋军和农民起义军两个线程不会停止