更新時間:2021-05-21 16:33:22 來源:動力節點 瀏覽832次
世間萬物都可以同時完成很多工作。例如,人體可以同時進行呼吸、血液循環、思考問題等活動。用戶既可以使用計算機聽歌,也可以編寫文檔和發送郵件,而這些活動的完成可以同時進行。這種同時執行多個操作的“思想”在Java中被稱為并發,而將并發完成的每一件事稱為線程。
在Java中,并發機制非常重要,但并不是所有程序語言都支持線程。在以往的程序中,多以一個任務完成以后再進行下一個任務的模式進行,這樣下一個任務的開始必須等待前一個任務的結束。Java語言提供了并發機制,允許開發人員在程序中執行多個線程,每個線程完成一個功能,并與其他線程并發執行。這種機制被稱為多線程。
多線程是非常復雜的機制,比如同時閱讀3本書。首先閱讀第1本第1章,然后再閱讀第2本第1章,再閱讀第3本第1章,接著回過頭閱讀第1本第2章,以此類推,就體現了多線程的復雜性。
既然多線程這么復雜,那么它在操作系統中是怎樣工作的呢?其實,Java中的多線程在每個操作系統中的運行方式也存在差異,在此以Windows操作系統為例介紹其運行模式。
Windows系統是多任務操作系統,它以進程為單位。一個進程是一個包含有自身地址的程序,每個獨立執行的程序都稱為進程,也就是正在執行的程序。圖1所示為Windows 7系統下使用任務管理器查看進程的結果。
圖1查看Windows 7的進程
系統可以分配給每個進程一段有限的執行CPU的時間(也稱為CPU時間片),CPU在這段時間中執行某個進程,然后下一個時間段又跳到另一個進程中去執行。由于CPU切換的速度非常快,給使用者的感受就是這些任務似乎在同時運行,所以使用多線程技術后,可以在同一時間內運行更多不同種類的任務。
圖2的左圖是單線程環境下任務1和任務2的執行模式。任務1和任務2是兩個完全獨立、互不相關的任務,任務1是在等待遠程服務器返回數據,以便進行后期的處理,這時CPU一直處于等待狀態,一直在“空運行”。如果任務2是在5秒之后被運行,雖然執行任務2用的時間非常短,僅僅是1秒,但必須在任務1運行結束后才可以運行任務2。由于運行在單任務環境中,所以任務2有非常長的等待時間,系統運行效率大幅降低。
單任務的特點就是排隊執行,也就是同步,就像在cmd中輸入一條命令后,必須等待這條命令執行完才可以執行下一條命令一樣。這就是單任務環境的缺點,即CPU利用率大幅降低。
圖2單線程和多線程執行模式
圖2的右側則是多線程環境下的執行模式。從中可以發現,CPU完全可以在任務1和任務2之間來回切換,使任務2不必等到5秒再運行,系統的運行效率大大得到提升。這就是要使用多線程技術、要學習多線程的原因。
那么什么是線程呢?線程可以理解成是在進程中獨立運行的子任務。比如,QQ.exe運行時就有很多的子任務在同時運行。像好友視頻、下載文件、傳輸數據、發送表情等,這些不同的任務或者說功能都可以同時運行,其中每一項任務完全可以理解成是“線程”在工作,傳文件、聽音樂、發送圖片表情等功能都有對應的線程在后臺默默地運行。
以上就是動力節點小編介紹的"Java線程概念是什么?",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習