行程和執行緒
行程:
行程可理解為是一個正在運行的程式整體
行程是具有一定獨立功能的程式,是作業系統進行資源分配的基本單位
執行緒:
執行緒是作業系統進行調度的基本單位
行程 vs. 執行緒
- 一個程式至少有一個行程,一個行程至少有一個執行緒

2. 執行緒比行程劃分更細,執行開銷更小,并發性更高
-
行程是一個物體,擁有獨立的資源,而同一行程中的多個執行緒是共享行程的資源的如下圖:

-
JVM在單行程中運行,JVM中的執行緒共享屬于該行程的堆,所以幾個執行緒可以同時訪問堆中的某個物件,這就導致了執行緒不安全
-
執行緒在行程中擁有自己的Stack空間,所以一個執行緒呼叫方法以及其他區域變數是執行緒完全的
總結
行程和執行緒是包含關系,但是多任務既可以由多行程實作,也可以由單行程內的多執行緒實作,還可以混合多行程+多執行緒,
具體采用哪種方式,要考慮到行程和執行緒的特點,
和多執行緒相比,多行程的缺點在于:
- 創建行程比創建執行緒開銷大,尤其是在Windows系統上;
- 行程間通信比執行緒間通信要慢,因為執行緒間通信就是讀寫同一個變數,速度很快,
而多行程的優點在于:
多行程穩定性比多執行緒高,因為在多行程的情況下,一個行程崩潰不會影響其他行程,而在多執行緒的情況下,任何一個執行緒崩潰會直接導致整個行程崩潰,
Java語言內置了多執行緒支持:一個Java程式實際上是一個JVM行程,JVM行程用一個主執行緒來執行main()方法,在main()方法內部,我們又可以啟動多個執行緒,此外,JVM還有負責垃圾回收的其他作業執行緒等,
因此,對于大多數Java程式來說,我們說多任務,實際上是說如何使用多執行緒實作多任務,
和單執行緒相比,多執行緒編程的特點在于:多執行緒經常需要讀寫共享資料,并且需要同步,例如,播放電影時,就必須由一個執行緒播放視頻,另一個執行緒播放音頻,兩個執行緒需要協調運行,否則畫面和聲音就不同步,因此,多執行緒編程的復雜度高,除錯更困難,
Java多執行緒編程的特點又在于:
- 多執行緒模型是Java程式最基本的并發模型;
- 后續讀寫網路、資料庫、Web開發等都依賴Java多執行緒模型,
因此,必須掌握Java多執行緒編程才能繼續深入學習其他內容,
關注公眾號:java寶典
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/187025.html
標籤:其他

