Interrupt如何停止執行緒

2021-08-10 14:16:48 字數 344 閱讀 8767

理解interrupt可以假設該執行緒擁有乙個變數boolean stopflag,一開始這個flag為false

關於interrupt有三個方法:

1,interrupt()  表示停止呼叫該方法的執行緒,這句話並不會停止該執行緒,只是會告訴該執行緒,你現在需要停止了。怎樣去停止讓該執行緒自己去完成。這個方法就是將flag修改為true

2,isinterrupted()表示呼叫該方法的執行緒是否要停止。也就是返回flag的值

3,interrupted()是乙個靜態方法,表示當前執行緒也就是thread.currentthread()所返回的執行緒是否要停止。同樣也是返回flag的值,但是它還會將flag修改為false

如何停止執行緒?

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

interrupt 執行緒相關

1.sleep interrupt 執行緒a正在使用sleep 暫停著 thread.sleep 100000 如果要取消他的等待狀態,可以在正在執行的執行緒裡 比如這裡是b 呼叫 a.interrupt 令執行緒a放棄睡眠操作,這裡a是執行緒a對應到的thread例項 執行interrupt 時,...

執行緒中斷interrupt

案例 這裡需要注意一下,try catch到interruptedexception e異常時,中斷訊號會被抹除,所以th.isinterrupted 如果執行在catch異常前,則isinterrupted為true,可以正常退出,否則中斷訊號抹除後,isinterrupted得到的值為false...