輔助的代碼有什么用
輔助的代碼還是要講清楚,不知道什么意思難以理解例子。作為一個(gè)初學(xué)者的猜測(cè): 1.兩個(gè)線(xiàn)程start后會(huì)調(diào)用實(shí)現(xiàn)的run方法,每循環(huán)一次就釋放一次CPU資源(調(diào)用了 yield 2.輔助代碼Thread.sleep(50)表示CPU釋放資源休眠50毫秒,大概是用于掛起當(dāng)前線(xiàn)程(不造什么用 3.設(shè)置keepRunning為false確保兩個(gè)線(xiàn)程中的死循環(huán)會(huì)停下來(lái) 4.運(yùn)行armOfRevolt.join()方法讓當(dāng)前運(yùn)行線(xiàn)程阻塞,直到amyOfRevolt運(yùn)行完畢,再運(yùn)行剛才停止的線(xiàn)程 我不懂執(zhí)行順序,一旦設(shè)置keepRunning為false,循環(huán)停止,不再輸出,join方法不知道有什么意義;
2018-08-27
Thread.sleep(50)的作用是讓stage()這個(gè)線(xiàn)程休眠五十毫秒,寫(xiě)在Thread.sleep(50)后面的就是終止條件,表面來(lái)看整個(gè)邏輯確實(shí)很奇怪,因?yàn)槟惆l(fā)現(xiàn)一整套下來(lái)線(xiàn)程跑的次數(shù)比你想象中的多的多。而真正讓線(xiàn)程跑了那么多的就是這個(gè)休眠50毫秒。原因:
這里啟用了兩個(gè)線(xiàn)程,而這兩個(gè)線(xiàn)程是嵌套在stage()這個(gè)線(xiàn)程里面的。Thread.sleep(50)只是讓stage()休眠了五十毫秒,并沒(méi)有休眠
而這兩個(gè)線(xiàn)程在沒(méi)有遇到keepRunning=false之前是死循環(huán),這個(gè)時(shí)候Thread.sleep(50)又讓stage休眠了50毫秒,在這50毫秒里兩軍一直在干架,(如果你把時(shí)間改成1000,那會(huì)執(zhí)行更多),所以原因差不多就這個(gè)吧,其他的也不多說(shuō)了,你是個(gè)聰明人。
2017-07-04
yield()方法會(huì)使該線(xiàn)程釋放對(duì)cpu目前的占用,方便其他線(xiàn)程可以競(jìng)爭(zhēng)cpu
join()方法是會(huì)讓執(zhí)行該方法的線(xiàn)程一直執(zhí)行完run()方法后,程序才會(huì)繼續(xù)往下執(zhí)行