執行緒第六課,執行緒狀態與停止執行緒

2021-06-29 16:00:08 字數 1217 閱讀 6543

一、執行緒狀態

1、新生狀態

用new關鍵字和thread類或其子類建立乙個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態

2、就緒狀態

處於就緒狀態的執行緒已經具備了執行條件,但還沒有分配到cpu,處於執行緒就緒佇列,等於系統為其分配cpu。等待狀態並不是執行狀態,當系統選定乙個等待執行的thread物件後,它就會從等待執行狀態進入執行狀態,系統挑選的動作稱之為「cpu排程」。一旦獲得cpu。執行緒就進入執行狀態並自動呼叫自己的run方法。

3、執行狀態

在執行狀態的執行緒執行自己的run方法中**,知道呼叫其他方法而終止、或等待某資源而阻塞或完成任務而死亡。如果在給定的時間片內沒有執行結束,就會被系統給換下來回到等待執行狀態。

4、阻塞狀態

處於執行狀態的執行緒在某些情況下,如執行了sleep方法,或等待i/o裝置等資源,將讓出cpu並暫停停止自己的執行,進入阻塞狀態。在阻塞狀態的執行緒不能進入緒佇列。只有當引起阻塞的原因消除時,如睡眠時間已到,或等待的i/o裝置空閒下來,執行緒變轉入就緒狀態,重新到就緒佇列中排隊等待,被系統選中後從原來停止的位置開始繼續執行。

5、死亡狀態

死亡狀態是執行緒宣告週期中的最後乙個階段。執行緒死亡的原因有兩個,乙個是正常執行的執行緒完成了他的全部工作;另乙個是執行緒被強制性的終止,如果通過執行stop或destroy方法來終止乙個執行緒【不推薦使用這兩個方法,前者會產生異常,後者是強制終止,不會釋放鎖】

如何停止執行緒

1、自然終止:執行緒體正常執行完畢

2、外部干涉:

執行緒類中,定義執行緒體使用的標識

執行緒體使用該標識

提供對外的方法改變該標識

外部根據條件,呼叫該方法即可

package com.pkushutong.demothread;

public class test05

system.out.println("main....."+i);

} }}class demo implements runnable }

//提供對外的方法改變該標識

public void stop()

}

執行緒第六課 同步鎖synchronized

這節課我們來講講同步鎖synchronized 先來說說為什麼要有這個玩意。多執行緒在併發訪問共享資源時可能會引發安全問題 上節課演示過了 為此我們需要在某乙個執行緒訪問共享資源時拒絕讓其他執行緒繼續訪問。舉個例子,廁所是公共資源吧,每個人就是乙個執行緒,當乙個人使用乙個廁所的時候是不是要在自己使用...

第六課 字型

a.字型系列 font family times new roman times,serif b.字型樣式 font style normal 正常 正常顯示文字 font style italic 斜體 以斜體字顯示的文字 font style oblique 傾斜的文字 文字向一邊傾斜 和斜體非...

第六課 列表

序列是python中最基本的 種資料結構。序列 於儲存 組有序的資料,所有的資料在序列當中都有 個唯 的位置 索引 並且序列中的資料會按照新增的順序來分配索引。資料結構指計算機中資料儲存的 式。python 基礎教程 第二版 對序列的定義為 資料結構。資料結構是通過某種方式 例如對元素進行編號 組織...