Thread-中斷
- interrupt()
interrupt()用于中斷線程,調(diào)用該方法的線程的狀態(tài)將被置為"中斷"狀態(tài)诈泼。
注意:線程中斷僅僅是設(shè)置線程的中斷狀態(tài)位,不會(huì)停止線程尿庐。需要用戶自己去監(jiān)視線程的狀態(tài)為并做處理靡馁。這里可以看到中斷后該線程還在繼續(xù)往下執(zhí)行,并沒(méi)有強(qiáng)制終止線程屿聋。
1.如果線程在wait空扎, sleep藏鹊,join阻塞時(shí),調(diào)用了interrupt()方法转锈,會(huì)拋出InterruptedException異常盘寡,會(huì)清除中斷標(biāo)志位。
2.如果不會(huì)中斷sleep撮慨,wait竿痰,join方法或文檔描述的其他情況,就不會(huì)拋InterruptException異常砌溺,就不會(huì)清除中斷標(biāo)志位影涉。
為了保證數(shù)據(jù)的一致性和完整性,我們需要用Thread.interrupt()方法再次中斷自己规伐,置上中斷標(biāo)志位蟹倾。
- interrupted()
測(cè)試當(dāng)前線程是否已經(jīng)中斷。調(diào)用interrupted()會(huì)清除中斷標(biāo)志位楷力。
- isInterrupted()
測(cè)試線程是否已經(jīng)中斷喊式。中斷標(biāo)志位 不受該方法的影響。
join()
主線程執(zhí)行了subThread.join()萧朝,主線程會(huì)等待子線程執(zhí)行完畢后,自己再執(zhí)行夏哭。