更新時間:2020-11-24 17:32:15 來源:動力節點 瀏覽1431次
許多學習Java的小伙伴為了攻克Java多線程付出了很多的努力,也下了很多功夫。然而,我們在學會了多線程的各種用法之后便不求甚解了,只是追求學會使用多線程的方法,未免有點舍本逐末了。在我看來,單純的會用只是知其然而不知其所以然。所以,我們對多線程的學習也應該知其所以然:多線程有什么用呢?
下面為大家揭開這個問題的答案,多線程用處有以下4點,我們逐一詳看。
1.發揮多核CPU的優勢
隨著工業的進步,現在的筆記本、臺式機乃至商用的應用服務器至少也都是雙核的,4核、8核甚至16核的也都不少見,如果是單線程的程序,那么在雙核CPU上就浪費了50%,在4核CPU上就浪費了75%。單核CPU上所謂的”多線程”那是假的多線程,同一時間處理器只會處理一段邏輯,只不過線程之間切換得比較快,看著像多個線程”同時”運行罷了。多核CPU上的多線程才是真正的多線程,它能讓你的多段邏輯同時工作,多線程,可以真正發揮出多核CPU的優勢來,達到充分利用CPU的目的。
2.防止阻塞
從程序運行效率的角度來看,單核CPU不但不會發揮出多線程的優勢,反而會因為在單核CPU上運行多線程導致線程上下文的切換,而降低程序整體的效率。但是單核CPU我們還是要應用多線程,就是為了防止阻塞。試想,如果單核CPU使用單線程,那么只要這個線程阻塞了,比方說遠程讀取某個數據吧,對端遲遲未返回又沒有設置超時時間,那么你的整個程序在數據返回回來之前就停止運行了。多線程可以防止這個問題,多條線程同時運行,哪怕一條線程的代碼執行讀取數據阻塞,也不會影響其它任務的執行。
3.便于建模
這是另外一個沒有這么明顯的優點了。假設有一個大的任務A,單線程編程,那么就要考慮很多,建立整個程序模型比較麻煩。但是如果把這個大的任務A分解成幾個小任務,任務B、任務C、任務D,分別建立程序模型,并通過多線程分別運行這幾個任務,那就簡單很多了。
4.優化代碼
如果利用單線程去處理文件,那么我們就得標記每次處理的各個節點的狀態;而如果使用多線程的話處理完一個扔一個,可以簡便不少。
以上列出的四個多線程用處,完美的解決了多線程有什么用的問題,當然,上面列出的幾點并未包含多線程的用處所有內容,本文也僅僅作為借鑒。建議結合著本站的Java多線程教程一起學習,才能夠為自己的Java多線程學習查漏補缺。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習