執行緒的中斷操作案例詳解

2021-10-19 09:41:47 字數 1328 閱讀 9683

為什麼需要中斷操作?

案例:寫乙個執行緒死迴圈,比如執行到某乙個時刻,我需要去關掉

public class demo implements runnable  catch (interruptedexception e) }}

public static void main(string args)

}

方式一:stop()

古老jdk提供了stop()廢棄方法, 開發中不要使用。因為一呼叫,執行緒就立刻停止,此時有可能引發相應的執行緒安全性問題

案例:執行run方法 i++ 休眠兩秒 主線程休眠1秒 調stop方法 立刻就暴力停掉了,後面的**還沒執行就停了。

public class unsafewithstop extends thread  catch (interruptedexception e) 

j++;

}public void printf()

public static void main(string args) throws interruptedexception

}

方式二:thread.interrupt方法

案例:呼叫interrupt不中斷

public class interrupdemo implements runnable 

}public static void main(string args) throws interruptedexception

}

原始碼中有寫出,大致意思是呼叫interrupt方法,會給這個執行緒乙個標記,標記這個執行緒準備結束執行,如果你在執行也不會結束

條件判斷是否被標記

public class interrupdemo implements runnable 

}public static void main(string args) throws interruptedexception

}

方式三:自定義標識終止執行緒

案例只是定義乙個volatile標識判斷

public class myinterrupdemo implements runnable

}public static void main(string args) throws interruptedexception

}

JS DOM操作案例

1 var text document.queryselector input 2 獲取焦點 3 text.onfocus function 7 8 失去焦點 9 text.onblur function 13 文字 請輸入6 12位密碼 給每個可以換膚的迴圈註冊點選事件 3for var i 0 ...

Python物件導向封裝操作案例詳解

封裝小明愛跑步 存放家具 封裝 是物件導向程式設計的一大特點 物件導向程式設計的 第一步 將 屬性 和 方法 封裝 到乙個抽象的 類 中 外界 使用 類 建立 物件,然後 讓物件呼叫方法 物件方法的細節 都被 封裝 在 類的內部 需求小明 體重 75.0 公斤 小明每次 跑步 會 0.5 公斤 小明...

c 迴圈佇列基本操作案例

迴圈佇列其實是為了解決順序棧的假溢位。設佇列大小是m。這裡特別提出一點就是計算佇列長度 q.rear q.front maxqsize maxqsize 此處說明原因,因為此處為迴圈佇列。因為迴圈佇列中,當q.rear的值小於q.front時,他們的差是負數要加上佇列最大長度才是佇列的長度,而如果他...