首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

作業系統中斷與 Java 線程中斷機制的本質區別

     編輯:程式設計綜合問答

作業系統中斷

  • 硬體中斷:外設(鍵盤、網卡、時鐘)向 CPU 發送信號,CPU 暫停當前任務、保存現場、跳轉至中斷服務程式(ISR)。
  • 軟體中斷/異常:CPU 內部事件(除零、缺頁、非法指令)觸發,同樣透過中斷向量表進入處理程式。
  • 系統呼叫:使用者程式主動發起 int 0x80 / syscall 進入核心態(屬陷阱指令)。

特點:非自願、硬體驅動、即時性,由作業系統核心統一管理。

Java Thread.interrupt()

  • 屬於協作式中斷:僅設定線程的「中斷狀態旗標」。
  • 被中斷線程必須主動檢查 Thread.interrupted() 或捕獲 InterruptedException(如 sleep、wait、join)。
  • 不會強制終止線程,也不會立即釋放鎖/資源。

核心差異

維度OS 中斷Java 中斷
觸發源硬體/核心應用程式呼叫 interrupt()
響應方式強制切換上下文線程自行輪詢/拋出異常
資源清理核心負責線程自行在 finally 處理

最佳實踐

// 正確響應中斷
while (!Thread.currentThread().isInterrupted()) {
    try {
        doWork();
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt(); // 重設旗標
        break;
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved