在平常的開(kāi)發(fā)中我們想打斷一個(gè)正在blocking的線程,或者結(jié)束執(zhí)行任務(wù)超時(shí)的線程可以通過(guò)下面的幾種方式優(yōu)雅的停止線程。、
-
1.利用標(biāo)識(shí)符去停止一個(gè)線程
image.png
通過(guò)捕獲到標(biāo)識(shí)符的改變從而結(jié)束任務(wù),結(jié)束線程。
- 2.利用java的Interrupt()去結(jié)束線程

image.png
執(zhí)行結(jié)果

image.png
通過(guò)調(diào)用Interrupt()拋出一個(gè)InterruptedException程序捕獲到這個(gè)異常后結(jié)束blocking(sleeping,waiting等)
-
3.利用設(shè)置守護(hù)線程去結(jié)束線程。
在實(shí)際開(kāi)發(fā)中,有些情況下程序沒(méi)有機(jī)會(huì)去判斷標(biāo)識(shí)符,也沒(méi)有機(jī)會(huì)去捕獲到InterruptedException,這種情況下,利用守護(hù)線程的特點(diǎn)能有效的幫我們結(jié)束想結(jié)束的線程。
image.png
執(zhí)行:
image.png
執(zhí)行結(jié)果:
image.png



