Java多線程簡單介紹-1

1、介紹
多線程比多任務更加有挑戰。多線程是在同一個程序內部並行執行,因此會對相同的內存空間進行併發讀寫操作。這可能是在單線程程序中從來不會遇到的問題。其中的一些錯誤也未必會在單CPU機器上出現,因爲兩個線程從來不會得到真正的並行執行。然而,更現代的計算機伴隨着多核CPU的出現,也就意味着不同的線程能被不同的CPU核得到真正意義的並行執行。

2、多線程的優點

  • 資源利用率更好;
  • 程序設計在某些情況下更簡單;
  • 程序響應更快

3、多線程的代價

  • 設計更復雜

雖然有一些多線程應用程序比單線程的應用程序要簡單,但其他的一般都更復雜。在多線程訪問共享數據的時候,這部分代碼需要特別的注意。線程之間的交互往往非常複雜。不正確的線程同步產生的錯誤非常難以被發現,並且重現以修復。

  • 上下文切換的開銷

當CPU從執行一個線程切換到執行另外一個線程的時候,它需要先存儲當前線程的本地的數據,程序指針等,然後載入另一個線程的本地數據,程序指針等,最後纔開始執行。這種切換稱爲“上下文切換”(“context switch”)。CPU會在一個上下文中執行一個線程,然後切換到另外一個上下文中執行另外一個線程。上下文切換並不廉價。如果沒有必要,應該減少上下文切換的發生

  • 增加資源的消耗

線程在運行的時候需要從計算機裏面得到一些資源。除了CPU,線程還需要一些內存來維持它本地的堆棧。它也需要佔用操作系統中一些資源來管理線程。我們可以嘗試編寫一個程序,讓它創建100個線程,這些線程什麼事情都不做,只是在等待,然後看看這個程序在運行的時候佔用了多少內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章