- Java多線程編程核心技術
- 高洪巖
- 1091字
- 2019-01-01 01:10:23
1.1 進程和多線程的概念及線程的優點
本節主要介紹在Java語言中使用多線程技術。但講到多線程這個技術時不得不提及“進程”這個概念,“百度百科”里對“進程”的解釋如圖1-1所示。

圖1-1 進程的解釋
初看這段文字會覺得十分的抽象,難以理解,但如果你看到圖1-2所示的內容,那么你對進程還不能理解嗎?

圖1-2 Windows7系統中的進程列表
難道可以將一個正在操作系統中運行的exe程序理解成一個“進程”嗎?沒錯!
通過查看“Windows任務管理器”中的列表,完全可以將運行在內存中的exe文件理解成進程,進程是受操作系統管理的基本運行單元。
那什么是線程呢?線程可以理解成是在進程中獨立運行的子任務。比如,QQ.exe運行時就有很多的子任務在同時運行。再如,好友視頻線程、下載文件線程、傳輸數據線程、發送表情線程等,這些不同的任務或者說功能都可以同時運行,其中每一項任務完全可以理解成是“線程”在工作,傳文件、聽音樂、發送圖片表情等功能都有對應的線程在后臺默默地運行。
這樣做有什么優點呢?更具體來講,使用多線程有什么優點呢?其實如果讀者有使用“多任務操作系統”的經驗,比如Windows系列,那么它的方便性大家應該都有體會:使用多任務操作系統Windows后,可以最大限度地利用CPU的空閑時間來處理其他的任務,比如一邊讓操作系統處理正在由打印機打印的數據,一邊使用Word編輯文檔。而CPU在這些任務之間不停地切換,由于切換的速度非常快,給使用者的感受就是這些任務似乎在同時運行。所以使用多線程技術后,可以在同一時間內運行更多不同種類的任務。
為了更加有效地理解多線程的優勢,看一下如圖1-3所示的單任務的模型圖,理解一下單任務的缺點。
在圖1-3中,任務1和任務2是兩個完全獨立、互不相關的任務,任務1是在等待遠程服務器返回數據,以便進行后期的處理,這時CPU一直處于等待狀態,一直在“空運行”。如果任務2是在10秒之后被運行,雖然執行任務2用的時間非常短,僅僅是1秒,但也必須在任務1運行結束后才可以運行任務2。本程序是運行在單任務環境中,所以任務2有非常長的等待時間,系統運行效率大幅降低。單任務的特點就是排隊執行,也就是同步,就像在cmd中輸入一條命令后,必須等待這條命令執行完才可以執行下一條命令一樣。這就是單任務環境的缺點,即CPU利用率大幅降低。
而多任務的環境如圖1-4所示。

圖1-3 單任務運行環境

圖1-4 多任務運行環境
在圖1-4中可以發現,CPU完全可以在任務1和任務2之間來回切換,使任務2不必等到10秒再運行,系統的運行效率大大得到提升。這就是要使用多線程技術、要學習多線程的原因。這是多線程技術的優點,使用多線程也就是在使用異步。
注意 多線程是異步的,所以千萬不要把Eclipse里代碼的順序當成線程執行的順序,線程被調用的時機是隨機的。
- Learn to Create WordPress Themes by Building 5 Projects
- 認識編程:以Python語言講透編程的本質
- 數據庫系統原理及MySQL應用教程
- CKA/CKAD應試教程:從Docker到Kubernetes完全攻略
- 深入分布式緩存:從原理到實踐
- C語言程序設計
- PHP+MySQL+Dreamweaver動態網站開發從入門到精通(第3版)
- 深入淺出React和Redux
- Python 3 數據分析與機器學習實戰
- 計算機應用技能實訓教程
- 視窗軟件設計和開發自動化:可視化D++語言
- JavaScript設計模式與開發實踐
- Learn Spring for Android Application Development
- Kotlin for Enterprise Applications using Java EE
- OAuth 2實戰寶典