更新時間:2021-05-28 15:52:16 來源:動力節(jié)點 瀏覽1879次
在 Java 中,并發(fā)機制非常重要,但并不是所有程序語言都支持線程。在以往的程序中,多以一個任務(wù)完成以后再進行下一個任務(wù)的模式進行,這樣下一個任務(wù)的開始必須等待前一個任務(wù)的結(jié)束。Java 語言提供了并發(fā)機制,允許開發(fā)人員在程序中執(zhí)行多個線程,每個線程完成一個功能,并與其他線程并發(fā)執(zhí)行。這種機制被稱為多線程。
既然多線程這么復(fù)雜,那么它在操作系統(tǒng)中是怎樣工作的呢?其實,Java中的多線程在每個操作系統(tǒng)中的運行方式也存在差異,在此以Windows操作系統(tǒng)為例介紹其運行模式。
Windows系統(tǒng)是多任務(wù)操作系統(tǒng),它以進程為單位。一個進程是一個包含有自身地址的程序,每個獨立執(zhí)行的程序都稱為進程,也就是正在執(zhí)行的程序。圖1所示為Windows 7系統(tǒng)下使用任務(wù)管理器查看進程的結(jié)果。
圖1 查看 Windows 7 的進程
系統(tǒng)可以分配給每個進程一段有限的執(zhí)行CPU的時間(也稱為CPU時間片),CPU在這段時間中執(zhí)行某個進程,然后下一個時間段又跳到另一個進程中去執(zhí)行。由于CPU切換的速度非常快,給使用者的感受就是這些任務(wù)似乎在同時運行,所以使用多線程技術(shù)后,可以在同一時間內(nèi)運行更多不同種類的任務(wù)。
圖2的左圖是單線程環(huán)境下任務(wù)1和任務(wù)2的執(zhí)行模式。任務(wù)1和任務(wù)2是兩個完全獨立、互不相關(guān)的任務(wù),任務(wù)1是在等待遠(yuǎn)程服務(wù)器返回數(shù)據(jù),以便進行后期的處理,這時CPU一直處于等待狀態(tài),一直在“空運行”。如果任務(wù)2是在5秒之后被運行,雖然執(zhí)行任務(wù)2用的時間非常短,僅僅是1秒,但必須在任務(wù)1運行結(jié)束后才可以運行任務(wù)2。由于運行在單任務(wù)環(huán)境中,所以任務(wù)2有非常長的等待時間,系統(tǒng)運行效率大幅降低。
單任務(wù)的特點就是排隊執(zhí)行,也就是同步,就像在cmd中輸入一條命令后,必須等待這條命令執(zhí)行完才可以執(zhí)行下一條命令一樣。這就是單任務(wù)環(huán)境的缺點,即CPU利用率大幅降低。
圖2 單線程和多線程執(zhí)行模式
圖2的右側(cè)則是多線程環(huán)境下的執(zhí)行模式。從中可以發(fā)現(xiàn),CPU完全可以在任務(wù)1和任務(wù)2之間來回切換,使任務(wù)2不必等到5秒再運行,系統(tǒng)的運行效率大大得到提升。這就是要使用多線程技術(shù)、要學(xué)習(xí)多線程的原因。
零基礎(chǔ)學(xué)自學(xué)linux,可以學(xué)習(xí)動力節(jié)點的Java多線程學(xué)習(xí)視頻,線程是進程中的一個獨立控制單元,線程在控制著進程的執(zhí)行,一個進程中至少有一個線程。多線程可以更好地利用cpu的資源,線程之間還能進行數(shù)據(jù)共享。在Java中,一個線程是指進程中的一個執(zhí)行流程,一個進程可以運行多個線程,Java中每個線程都有一個調(diào)用棧,即使不在程序中創(chuàng)建任何新的線程,也有一個main()方法運行在一個線程內(nèi),稱為主線程,一旦創(chuàng)建一個新的線程,就產(chǎn)生一個新的調(diào)用棧。通過該專題課程的系統(tǒng)學(xué)習(xí),讓大家一次性搞明白Java中的多線程。
課程目標(biāo):通過本系列課程的學(xué)習(xí),一次性搞明白多線程,提升自身技術(shù)能力與價值。
適用人群:具有Java基礎(chǔ)的人群,希望系統(tǒng)學(xué)習(xí)Java多線程的人群。
以上就是動力節(jié)點小編介紹的"Java多線程視頻教程全套基礎(chǔ)學(xué)習(xí)下載",希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743