操作系統的中斷和java程序中的線程中斷Thread.interrupted()有什麼區別
操作系統中斷是指CPU對系統發生的某個事件做出的一種反應,CPU暫停正在執行的程序,保留現場後自動地轉去執行相應的處理程序,處理完該事件後再返回斷點繼續執行被“打斷”的程序。
中斷可分為三類,第一類是由CPU外部引起的,稱作中斷,如I/O中斷、時鐘中斷、控制台中斷等。第二類是來自CPU的內部事件或程序執行中的事件引起的過程,稱作異常,如由於CPU本身故障(電源電壓低於105V或頻率在47~63Hz之外)、程序故障(非法操作碼、地址越界、浮點溢出等)等引起的過程。
第三類由於在程序中使用了請求系統服務的系統調用而引發的過程,稱作“陷入”(trap,或者陷阱)。前兩類通常都稱作中斷,它們的產生往往是無意、被動的,而陷入是有意和主動的。
java:
一個線程在未正常結束之前, 被強制終止是很危險的事情. 因為它可能帶來完全預料不到的嚴重後果. 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了.
那麼不能直接把一個線程搞掛掉, 但有時候又有必要讓一個線程死掉, 或者讓它結束某種等待的狀態 該怎麼辦呢? 優雅的方法就是, 給那個線程一個中斷信號, 讓它自己決定該怎麼辦.這個線程收到中斷信號後, 會拋出InterruptedException