??????本篇文章講解的知識點主要圍繞多執行緒,廢話不多說,只分享Java相關的干貨!
執行緒的調度與控制
通常我們的計算機只有一個CPU,CPU 在某一個時刻只能執行一條指令,執行緒只有得到CPU 時間片,也就是使用權,才可以執行指令,在單 CPU 的機器上執行緒不是并行運行的,只有在多個CPU 上執行緒才可以并行運行,Java 虛擬機要負責執行緒的調度,取得 CPU 的使用權,目前有兩種調度模型:分時調度模型和搶占式調度模型,Java 使用搶占式調度模型,
分時調度模型:所有執行緒輪流使用CPU 的使用權,平均分配每個執行緒占用CPU 的時間片
搶占式調度模型:優先級高的執行緒獲取 CPU 的時間片相對多一些,如果執行緒的優先級相同, 那么會隨機選擇一個
???????執行緒優先級
執行緒 優 先 級 主 要分 三 種 :
- MAX_PRIORITY( 最高級 );
- MIN_PRIORITY (最低級)
- NOM_PRIORITY(標準)默認



從以上輸出結果應該看可以看出,優先級高的執行緒(t1)會得到的 CPU 時間多一些,優先執行完成
???????Thread.sleep
sleep 設定休眠的時間,單位毫秒,當一個執行緒遇到 sleep 的時候,就會睡眠,進入到阻塞狀態, 放棄 CPU,騰出 cpu 時間片,給其他執行緒用,所以在開發中通常我們會這樣做,使其他的執行緒能夠取得CPU 時間片,當睡眠時間到達了,執行緒會進入可運行狀態,得到 CPU 時間片繼續執行,如果執行緒在睡眠狀態被中斷了,將會拋出IterruptedException
【示例代碼】

???????Thread.yield、
它與sleep()類似,只是不能由用戶指定暫停多長時間,并且 yield()方法只能讓同優先級的執行緒有執行的機會

???????t.join();
當前執行緒可以呼叫另一個執行緒的join 方法,呼叫后當前執行緒會被阻塞不再執行,直到被呼叫的執行緒執行完畢,當前執行緒才會執行


???????interrupt(中斷)
如果我們的執行緒正在睡眠,可以采用interrupt 進行中斷


???????如何正確的停止一個執行緒
通常定義一個標記,來判斷標記的狀態停止執行緒的執行


以上就是多執行緒相關的知識點,持續更新中,配套視頻教程👇,正在學習Java的同學們一定要關注哦~~
Java零基礎進階視頻教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264428.html
標籤:AI
