1. 程式人生 > >執行緒的基本概念,基本狀態、狀態之間的關係

執行緒的基本概念,基本狀態、狀態之間的關係

基本概念

執行緒:是程序中的一個執行控制單元,執行路徑

      一個程序中至少有一個執行緒在負責控制程式的執行

      一個程序中如果只有一個執行路徑,這個程式稱為單執行緒

      一個程序中有多個執行路徑時,這個程式成為多執行緒

一個執行緒是程序的一個順序執行流。同類的多個執行緒共享一塊記憶體空間和一組系統資源,執行緒本身有一個供程式執行時的堆疊。執行緒在切換時負荷小,因此,執行緒也被稱為輕負荷程序。一個程序中可以包含多個執行緒。

在JVM記憶體模型中,執行緒開闢在棧中,有些前輩稱之為方法的棧幀,對於這個棧幀空間就是一個執行緒空間,也就是一個程序呼叫了一個方法,這個方法在棧中就開闢一個空間,也可以認為是執行緒的空間,當該方法結束後,該執行緒就結束,但程序還在繼續執行,還會繼續執行接下來的方法,繼續開闢執行緒。。。

執行緒與程序區別

一個程序有一個或多個執行緒。執行緒更細化於程序,使得多執行緒程式的併發性高。程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

執行緒在執行過程中與程序的區別在於每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用來實現程序的排程和管理以及資源分配。

執行緒狀態

1.新建

new語句建立的執行緒物件處於新建狀態,此時它和其他java物件一樣,僅被分配了記憶體。


2.等待

當執行緒在new之後,並且在呼叫start方法前,執行緒處於等待狀態。

3.就緒

當一個執行緒物件建立後,其他執行緒呼叫它的start()方法,該執行緒就進入就緒狀態。處於這個狀態的執行緒位於Java虛擬機器的可執行池中,等待cpu的使用權。

4.執行狀態

處於這個狀態的執行緒佔用CPU,執行程式程式碼。在併發執行環境中,如果計算機只有一個CPU,那麼任何時刻只會有一個執行緒處於這個狀態。

只有處於就緒狀態的執行緒才有機會轉到執行狀態。

5.阻塞狀態

阻塞狀態是指執行緒因為某些原因放棄CPU,暫時停止執行。當執行緒處於阻塞狀態時,Java虛擬機器不會給執行緒分配CPU,直到執行緒重新進入就緒狀態,它才會有機會獲得執行狀態。

阻塞狀態分為三種:

1、等待阻塞:執行的執行緒執行wait()方法,JVM會把該執行緒放入等待池中。

2、同步阻塞:執行的執行緒在獲取物件同步鎖時,若該同步鎖被別的執行緒佔用,則JVM會把執行緒放入鎖池中。

3、其他阻塞:執行的執行緒執行Sleep()方法,或者發出I/O請求時,JVM會把執行緒設為阻塞狀態。當Sleep()狀態超時、或者I/O處理完畢時,執行緒重新轉入就緒狀態。

6.死亡狀態

當執行緒執行完run()方法中的程式碼,或者遇到了未捕獲的異常,就會退出run()方法,此時就進入死亡狀態,該執行緒結束生命週期。

狀態之間的轉換

參照別人做的圖:


也可看這個:

http://s8.sinaimg.cn/mw690/000iyyaezy6PTqh21UPc7&690

文章參考:http://blog.csdn.net/bornlili/article/details/55805732 感謝博主分享

相關推薦

執行基本概念基本狀態狀態之間關係

基本概念 執行緒:是程序中的一個執行控制單元,執行路徑       一個程序中至少有一個執行緒在負責控制程式的執行       一個程序中如果只有一個執行路徑,這個程式稱為單執行緒       一個

JAVA基礎22-多執行(一)【多執行概念執行狀態及其轉換】

多執行緒 一.概念          1. 程序:程序是表示資源分配的的基本概念,又是排程執行的基本單位,是系統中的併發執行的單位。           2. 執行緒:單個程序中執行中

學習筆記之Java執行安全雜談(上)——執行安全概念基本方案

執行緒安全問題絕對是併發開發中一個重點中的重點,這篇就來說說執行緒安全相關的一些問題。執行緒安全是什麼概念?這個概念說簡單也簡單,說複雜也複雜,“安全”的概念是什麼,用我個人的話說的淺顯些,就是類/物件本身在多執行緒併發執行的場景下,能夠保證程式的邏輯是可以接受的而不是被

介紹NPTL (經典--詮釋了執行概念以及linux排程單位)

                POSIX Thread Library (NPTL)使Linux核心可以非常有效的執行使用POSIX執行緒標準寫的程式。這裡有一個測試資料,在32位機下,NPTL成功啟動100000個執行緒只用了2秒,而不使用NPTL將需要大約15分鐘左右的時間。歷史在核心2.6以前的排程實

執行基礎概念實現執行三種方法中斷執行方法以及執行狀態轉化

1、CPU核心數和執行緒數的關係 1:1的關係,引入超執行緒之後,就是1:2 2、cpu時間輪轉機制,即RR排程 3、程序和執行緒 程序:程式執行資源分配最小單位,程序內部有多個執行緒,多個執行緒之間會共享程序資源 執行緒:CPU排程的最小單位 4、並行和併發

Windows訊息佇列執行訊息佇列視窗訊息的概念關係

1.視窗 Windows程式是由一系列的視窗構成的,每個視窗都有自己的視窗過程,視窗過程就是一個擁有有固定 Signature 的 C函式,具體格式如下: LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wPa

java多執行(一):執行的五種基本狀態以及生命週期

1、Java執行緒具有五中基本狀態: 新建狀態(New):當執行緒物件對建立後,即進入了新建狀態,如:Thread thread1 = new MyThread(); 就緒狀態(Runnable):當呼叫執行緒物件的start()方法[ 如:thread1 .start(); ],執行緒

執行涉及的一些基本概念

在看多執行緒之前看一些基本概念 一: 執行緒:執行緒是CPU排程(執行任務)的最小單位;其實質就是一段程式碼(一個任務) 程序:系統中正在執行的一個應用程式;程序是CPU分配資源和排程的單位 兩者的聯絡與區別:

JavaSE基礎(day19)(1)I/O流(2)執行基本概念基本操作(3)執行的同步機制

默寫: 1.程式設計題 使用三種方式實現檔案的拷貝。 程式碼 (1)I/O流 (2)執行緒的基本概念和基本操作 (3)執行緒的同步機制 1.I/O流 1.1 ObjectOutputStream類(重點) (1)基本概念 java.io.ObjectOutputStream類用於

多程序與多執行(一)--基本概念(轉)

程序(英語:Process,中國大陸譯作程序,臺灣譯作行程) 是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的一個獨立單位。程式是一組指令的有序集合,它本身沒有任何執行的含義,只是一個靜態實體。程序是程式在某個資料集上的執行,是一個動態實體(程序本身不會執行,是執行緒的容器

Angular2學習筆記.1環境部署基本概念HelloAngular2

前言 作為本系列筆記的第一篇文章,在開頭要說一些閒言碎語。 首先我是一個Angular2的初學者,這個系列文章不是教程或其他一切厲害的東西,僅僅是作為我學習過程的一個記錄,我在編輯和排版後將它作為資料儲存並分享給其他人。也希望大家和我共同以學習的態度探討技術

IntegerCache快取佔用堆常量池的問題自動拆裝箱的基本概念Integer==int時的問題說明

原創宣告:作者:Arnold.zhao 部落格園地址:https://www.cnblogs.com/zh94 先普及一個基本概念:Java中基本資料型別的裝箱和拆箱操作 自動裝箱 在JDK5以後,我們可以直接使用Integer num = 2;來進行值的定義,但是你有沒有考慮過?Integer是一個物件呀,

網絡編程的基本概念TCP/IP協議簡介

cli 面向 red 展示 應用程序 隨著 完全 welcome 底層 8.1.1 網絡基礎知識  計算機網絡形式多樣,內容繁雜。網絡上的計算機要互相通信,必須遵循一定的協議。目前使用最廣泛的網絡協議是Internet上所使用的TCP/IP協議。 網絡編程的目的就是指直接或

awk的基本概念基礎用法和高級用法

awk 基本概念 基礎用法 高級用法 awk:文本處理三劍客:grep系,sed,awkgrep系:grep,egrep,fgrep,基於PATTERN進行文本過濾;sed:流編輯器,逐行編輯器;模式空間,保持空間;awk:報告生成器;格式化文檔輸出; awk是下面三個人的姓氏縮寫:

Oracle運維基本操作倒庫備份恢復與優化。

Oracle Linux Centos 系統 運維 Oracle基本操作創建表空間CREATE TABLESPACE test //這裏我們創建的表空間名稱叫做test,名字可以自定義 LOGGING DATAFILE ‘/data/ora01/app/oracle/oradat

C# 解決子執行不能操作主執行UI(介面)問題涉及到多執行概念

1、在預設情況下,C#不准許在一個執行緒中直接訪問或操作另一執行緒中建立的控制元件,這是因為訪問windows窗體控制元件本質上是不安全的。 2、執行緒之間是可以同時執行的,那麼如果有兩個或多個執行緒同時操作某一控制元件的某狀態,嘗試將一個控制元件變為自己需要的狀態時, 執行緒的死鎖就可能發生。

四 分類:基本概念決策樹與模型評估2

4.4模型的過分擬合 分類模型的誤差分類:訓練誤差和泛化誤差 過擬合:訓練誤差小,泛化能力弱 造成過擬合的主要原因:模型複雜度 4.4.1噪聲導致的過分擬合 由於擬合了誤分類(噪聲)的訓練記錄,導致了泛化誤差增大。 4.4.2缺乏代表性樣本導致的過分擬合 由於訓練樣本太

四 分類:基本概念決策樹與模型評估1

4.1預備知識 元組(x,y):x指屬性集合,y指分類屬性 目標函式又稱為分類模型:描述性建模;預測性建模 4.2 解決分類問題的一般方法 分類技術是一種根據輸入資料集建立分類模型的系統方法。 學習演算法確定分類模型;泛化能力模型 訓練集;檢驗集 分類模型效能評估: 1.正確

乾貨!執行池+CountDownLatch實現 多執行併發計算彙總

目錄結構 抽象類:求和器 單執行緒 求和器 VS 多執行緒 求和器 1)執行緒池 多個執行緒 一起併發執行,效能很生猛 2)CountDownLatch 主執行緒 使用 latch.await() 阻塞住,直到所有 子任務 都執行完畢了

C++--面向物件的基本概念程式的開發過程

物件(Object): 一般意義的物件:是現實世界中一個實際存在的事物; 面向物件方法中的物件:是系統中用來描述客觀事物的一個實體 抽象與分類: 分類所依據的原則--抽象 抽象出同一類物件的共同屬性和行為,形成類 類與物件的關係:型別與例項的關係,猶如模