併發 八 無法檢查的中斷狀態

2021-08-04 03:26:42 字數 546 閱讀 2537

有如下的程式:

public

class

lockedownthread

extends

thread catch (interruptedexception e) }}

}public

static

void

main(string args)

}

在上面的程式中,啟動執行緒後立刻發出中斷訊號,緊接著在主線程中能迅速檢查到中斷狀態,但是在exception中永遠都無法檢查到中斷狀態,始終都為false。

在沒有任何操作的前提下,中斷狀態卻表現出兩種截然不同的值,這是為什麼呢?

原來當執行緒在非阻塞狀態下中斷時,系統為它設定中斷狀態,但是,只要觸發了interruptedexception,那麼中斷狀態將會被清除,所以在上面的**中,在cath(interruptedexception e)**塊中,永遠也檢查不到中斷狀態為true。

千萬不要在cath(interruptedexception e)**塊裡判斷中斷狀態,因為它始終為假。

IDT 中斷處理 的許可權檢查

x86 實模式下,使用中斷向量表 位址為0 1k的部分,每個向量4個位元組 x86 保護模式下,使用中斷描述符表 idt.cpu中有 idtr 暫存器,儲存 idt 表的位置,lidt 指令用於載入 idt 表到 idtr中。idt 表中的 表項 是 8個位元組,一部分使用者是段選擇符,一部分是段內...

高併發(4) 執行緒的狀態

上篇文章講解了多執行緒的停止方法。我們本篇文章來講講多執行緒的執行狀態。一 多執行緒的執行狀態。我們都知道,執行緒分為新建 就緒 執行 阻塞 死亡這幾種狀態,這些狀態分別是什麼意思呢,來看一下。新建 指的是執行緒新建立出來,並沒有執行start方法,這時候就是新建狀態,沒有執行 就緒 就緒狀態指的是...

MYSQL資料庫簡單的狀態檢查

show processlist可以檢查mysql當前sql語句的執 況,而show status就可以檢查mysql當前的狀態 命令 show status ps 可以通過like來過濾一些不必要的資訊 這個命令返回的資訊相當之多,一共返回了291行資訊 不用版本可能會有所差異哈 我選擇了幾個比較...