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