無法響應中斷時如何停止執行緒?

2021-09-26 07:56:01 字數 428 閱讀 4691

如何處理不可中斷的阻塞?

a. 用interrupt方法來請求停止執行緒

b. 不可中斷的阻塞無法處理

c. 根據不同的類呼叫不同的方法

解答: 應該選c。

如果執行緒阻塞是由於呼叫了 wait(),sleep() 或 join() 方法,你可以中斷執行緒,通過丟擲 interruptedexception 異常來喚醒該執行緒。 但是對於不能響應interruptedexception的阻塞,很遺憾,並沒有乙個通用的解決方案。 但是我們可以利用特定的其它的可以響應中斷的方法,比如reentrantlock.lockinterruptibly(),比如關閉套接字使執行緒立即返回等方法來達到目的。 答案有很多種,因為有很多原因會造成執行緒阻塞,所以針對不同情況,喚起的方法也不同。 總結就是說如果不支援響應中斷,就要用特定方法來喚起,沒有萬能藥。

如何停止執行緒?

使用退出標誌,使執行緒正常退出,也就是當run方法完成後執行緒終止。使用stop方法強行終止執行緒 這個方法不推薦使用,因為stop和suspend resume一樣,也可能發生不可預料的結果 使用interrupt方法中斷執行緒。表示讓當前等待的執行緒直接丟擲異常 如下 package com.n...

PMIC act8937 無法響應中斷

無論插入usb介面還是充電器介面,act8937都不能響應中斷,而act8937程式曾經在android2.3中驗證 過的,先查硬體,排除硬體錯誤。確定是軟體問題,只有列印暫存器檢視了。在drivers power s5pv210 battery.c 中 include jeff.include i...

Interrupt如何停止執行緒

理解interrupt可以假設該執行緒擁有乙個變數boolean stopflag,一開始這個flag為false 關於interrupt有三個方法 1,interrupt 表示停止呼叫該方法的執行緒,這句話並不會停止該執行緒,只是會告訴該執行緒,你現在需要停止了。怎樣去停止讓該執行緒自己去完成。這...