Thread之interrupt 函式解析

2021-08-26 23:35:43 字數 771 閱讀 2424

函式interrupt()對處於runnable或waiting(包括time_waiting)狀態的執行緒進行中斷,作用如下:

例如:

package interrupt;

public

class

mythread

extends

thread

}}

上述**產生的執行緒,執行後狀態為runnable。對其使用interrupte()函式,再使用函式isinterrupted()進行判斷,結果為true,確認中斷標誌位被標識。原因是執行緒沒有被真正終止,中斷後for迴圈語句將繼續執行。

例如:

package interrupt;

public

class

mythread

extends

thread

} catch (interruptedexception e)

}}

上述**產生的執行緒,執行後狀態為time_waiting。對其使用interrupte()函式,再使用函式isinterrupted()進行判斷,結果為false,確認中斷標誌位被清除。原因是此時執行緒被中止狀態為terminated,中斷標誌位復位。中斷後丟擲interrupedexception,for迴圈語句不再執行。

該函式為類函式,在使用interrupt()函式後,使用interrupted()對當前執行緒是否中斷進行判斷,並清除中斷標誌位。如果重複呼叫,第二次呼叫會返回false,因為第一次已經清除了中斷標誌位。

Thread中的中斷方法interrupted

thread.interrupt 方法,給執行緒新增乙個中斷標誌,不是意味著這個執行緒馬上結束,而是對執行緒起到一種通知的作用。兩種判斷中斷標誌的方法,一種是靜態方法interrupted,它可以獲取標誌,並且把中斷標誌清除,也就是返回fasle。還有一種方法是isinterrupted,它也可以獲...

CUDA之thread訪問總結

問 對於結構體陣列 typedef struct float3 float3 d data id id為執行緒索引號,則對於乙個 wrap,為其中的每個執行緒讀取4位元組需要幾次訪存呢?為其中的每乙個執行緒讀取12位元組需要幾次訪存呢?答 如果只是為warp中的每個執行緒讀1個該結構體的例項的乙個分...

Thread之結束執行緒 8

在thread中stop 方法已經被不推薦使用了,那麼我們該如何去以一種優美的姿態去結束掉它呢?class threaddemo02 implements runnable public void changeflag public class stopthread num system.out.p...