執行緒interrupt方法中斷的實質

2021-08-30 14:32:27 字數 711 閱讀 4564

首先有兩段**:

**1:

//執行緒的中斷操作(1) class mythread implements runnable catch(interruptedexception e) system.out.println("3、run方法執行完成"); } } public class threadinterruptdemo01 catch(exception e){} t.interrupt(); //中斷執行緒 } }

**2:

//執行緒的中斷操作(2)執行緒沒有被中斷,interrupt只能中斷sleep,wait等方法 class mythread implements runnable system.out.println("執行緒正常執行完畢"); } } public class threadinterruptdemo02 }

通過兩段**的執行結果可以知道,**1的中斷實現了,而**2的中斷沒有實現,interrupt並沒有中斷執行緒的執行,而是中斷了sleep的執行。原因何在,這與interrupt的中斷內容有關。interrupt只能中斷sleep,wait等方法,而通過查詢api可以看到,sleep和wait都有interruptedexception(中斷異常)需要處理。所以可以這樣看:interrupt只能中斷會丟擲中斷異常的方法,這才是interrupt的實際作用。

還有一點需要注意,當sleep方法被中斷後,sleep方法後的內容依然會被執行,相當於執行緒被喚醒進入了正常執行。

執行緒中斷interrupt

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

執行緒interrupt方法中斷的實質

首先有兩段 1 執行緒的中斷操作 1 class mythread implements runnable catch interruptedexception e system.out.println 3 run方法執行完成 public class threadinterruptdemo01 c...

中斷執行緒 interrupt

呼叫interrupt 通知執行緒應該中斷 1 如果執行緒處於阻塞狀態,則執行緒立即退出被阻塞狀態,並丟擲乙個interruptedexception異常 2 如果執行緒處於正常活動狀態,那 package com.mall.controllor.alene import sun.managemen...