如果把keepRunning=false放在 程咬金大殺四方之后 join怎么理解?
join是指讓其他線(xiàn)程等待當(dāng)前線(xiàn)程終止。
如果
Thread k3 = new keyThread();//程咬金
k3.start();
k3.join();
隋軍.keepRunning = false;
民兵.keepRunning = false;
這么寫(xiě),隨軍沖鋒和民兵沖鋒會(huì)貫穿在程咬金的活動(dòng)中間,看不出來(lái)join的效果啊
2016-04-26
在A(yíng)線(xiàn)程中調(diào)用了B線(xiàn)程的join方法,意思是直到線(xiàn)程A執(zhí)行完畢后才會(huì)執(zhí)行線(xiàn)程B,所以這里的join只對(duì)舞臺(tái)線(xiàn)程起作用。對(duì)起義軍和隋軍線(xiàn)程,程咬金的join方法根本不起作用。我試了下,把keepRunning設(shè)為false的語(yǔ)句注釋掉,發(fā)現(xiàn)即使加上chengyaojin.join(),這兩個(gè)線(xiàn)程也不會(huì)停止,會(huì)一直運(yùn)行下去。
2016-04-26
我的理解是這里執(zhí)行join方法的線(xiàn)程是stage線(xiàn)程,所以只有stage線(xiàn)程會(huì)停止,等待程咬金線(xiàn)程的完成,而因?yàn)閟tage線(xiàn)程的停止,keepRunning=false暫時(shí)不會(huì)執(zhí)行,所以隋軍和農(nóng)民起義軍兩個(gè)線(xiàn)程不會(huì)停止