resumethread 用法 身為一個(gè)程序員,如何優(yōu)雅的結(jié)束一個(gè)線程?
身為一個(gè)程序員,如何優(yōu)雅的結(jié)束一個(gè)線程?謝謝你的邀請!在回答之前,讓我們先看看線程的幾種狀態(tài)以及狀態(tài)切換的過程,如下圖所示(我不想畫,在線盜竊):線程退出必須是初始化后的任何狀態(tài)(不包括終止?fàn)顟B(tài))退出
身為一個(gè)程序員,如何優(yōu)雅的結(jié)束一個(gè)線程?
謝謝你的邀請
!在回答之前,讓我們先看看線程的幾種狀態(tài)以及狀態(tài)切換的過程,如下圖所示(我不想畫,在線盜竊):
線程退出必須是初始化后的任何狀態(tài)(不包括終止?fàn)顟B(tài))退出。
線程在啟動后獨(dú)立運(yùn)行。正常情況下,他們不能在啟動后進(jìn)行干預(yù)。他們只能等待跑步的結(jié)束。如果他們想干預(yù),他們只能在共享內(nèi)存區(qū)域中添加一個(gè)狀態(tài)標(biāo)識符。實(shí)際上,JDK已經(jīng)有了一個(gè)內(nèi)置的狀態(tài)標(biāo)識符,即中斷標(biāo)識符。它調(diào)用中斷方法,但是處于等待狀態(tài)的線程將拋出中斷異常,并且它可以優(yōu)化add狀態(tài)變量。
總結(jié)起來,有三種方法:
1。等待線程完成自己的執(zhí)行(這是最優(yōu)雅的,但沒有討論的意義)。
2. 調(diào)用中斷方法判斷中斷標(biāo)識。但是,在等待狀態(tài)下,會拋出異常,不能認(rèn)為是優(yōu)雅的。示例代碼如下:
3。自己添加中斷狀態(tài)標(biāo)志。示例代碼如下:
摘要:
等待狀態(tài):在此狀態(tài)下,exit只能調(diào)用中斷方法。
阻塞狀態(tài):有兩種類型:一種是可中斷的,調(diào)用中斷方法退出;另一種是不可中斷的,只有運(yùn)行后才能退出。
就緒狀態(tài):等待CPU調(diào)度,無干預(yù)。
運(yùn)行狀態(tài):添加您自己的共享狀態(tài)標(biāo)識符。
最后的“優(yōu)雅退出”代碼如下: