概念:
程式:一組計算機能識別和執行的指令,運行于電子計算機上,滿足人們某種需求的資訊化工具,計算機需要加載代碼,同時也要加載資料,行程:行程是指計算機中已運行的程式,是系統進行資源分配和調度的基本單位,是作業系統結構的基礎,在早期面向行程設計的計算機結構中,行程是程式的基本執行物體;在當代面向執行緒設計的計算機結構中,行程是執行緒的容器,行程是程式真正運行的實體,若干行程可能與同一個程式相關,且每個行程皆可以同步或異步的方式獨立運行,執行緒:執行緒是作業系統能夠進行運算調度的最小單位,它被包涵在行程之中,是行程中的實際運作單位,一條執行緒指的是行程中一個單一順序的控制流,一個行程中可以并行多個執行緒,每條執行緒并行執行不同的任務,執行緒是獨立調度和分派的基本單位,- 特點:
輕型物體,獨立調度和分派的基本單位,可并發執行,共享行程資源, 行程執行緒區別聯系:執行緒是行程劃分成的更?的運?單位,執行緒和行程最?的不同在于基本上各行程是獨?的,?各執行緒則不?定,因為同?行程中的執行緒極有可能會相互影響,從另??度來說,行程屬于作業系統的范疇,主要是同?段時間內,可以同時執??個以上的程式,?執行緒則是在同?程式內?乎同時執??個以上的程式段,
執行緒狀態:

? 新生狀態(New)
用new關鍵字建立一個執行緒物件后,該執行緒物件就處于新生狀態,處于新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態,
? 就緒狀態(Runnable)
處于就緒狀態的執行緒已經具備了運行條件,但是還沒有被分配到CPU,處于“執行緒就緒佇列”,等待系統為其分配CPU,就緒狀態并不是執行狀態,當系統選定一個等待執行的Thread物件后,它就會進入執行狀態,一旦獲得CPU,執行緒就進入運行狀態并自動呼叫自己的run方法,
有4種原因會導致執行緒進入就緒狀態:
-
新建執行緒:呼叫start()方法,進入就緒狀態;
-
阻塞執行緒:阻塞解除,進入就緒狀態;
-
運行執行緒:呼叫yield()方法,直接進入就緒狀態;
-
運行執行緒:JVM將CPU資源從本執行緒切換到其他執行緒,
? 運行狀態(Running)
在運行狀態的執行緒執行自己run方法中的代碼,直到呼叫其他方法而終止或等待某資源而阻塞或完成任務而死亡,如果在給定的時間片內沒有執行結束,就會被系統給換下來回到就緒狀態,也可能由于某些“導致阻塞的事件”而進入阻塞狀態,
? 阻塞狀態(Blocked)
阻塞指的是暫停一個執行緒的執行以等待某個條件發生(如某資源就緒),
有4種原因會導致阻塞:
-
執行sleep(int millsecond)方法,使當前執行緒休眠,進入阻塞狀態,當指定的時間到了后,執行緒進入就緒狀態,
-
執行wait()方法,使當前執行緒進入阻塞狀態,當使用nofity()方法喚醒這個執行緒后,它進入 就緒狀態,
-
執行緒運行時,某個操作進入阻塞狀態,比如執行IO流操作(read()/write()方法本身就是阻塞的方法),只有當引起該操作阻塞的原因消失后,執行緒進入就緒狀態,
-
join()執行緒聯合: 當某個執行緒等待另一個執行緒執行結束后,才能繼續執行時,使用join()方法,
? 死亡狀態(Terminated)
死亡狀態是執行緒生命周期中的最后一個階段,當一個執行緒進入死亡狀態以后,就不能再回到其它狀態了,
執行緒死亡的原因有兩個:
-
正常運行的執行緒完成了run()方法內的全部作業;
-
程被強制終止,如通過執行stop()或destroy()方法來終止一個執行緒(已過時)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273231.html
標籤:其他
