首頁  >  文章  >  Java  >  Java 多執行緒代價

Java 多執行緒代價

黄舟
黄舟原創
2017-02-28 10:16:321229瀏覽

從單執行緒轉換成多執行緒不只是提供了益處。它也有一些代價。不要在應用程式中因為你可以用就去使用多執行緒。你應該有一個好的想法透過這樣做能得到什麼好處,好處比代價更大。當處在懷疑中的時候,嘗試測試衡量應用的性能或反應速度,代替只是猜測。

更複雜的設計

雖然多執行緒的某些部分比單執行緒的簡單,但是其他的部分更複雜。透過多執行緒執行的程式碼存取共享的資料需要特殊的注意。線程交互總是原理簡單。來自於不正確的線程同步出現的錯誤很難去檢測,出現以及修復。

上下文切換開銷

當一個CPU從一個執行緒切換到另外一個執行緒的時候,這個CPU需要保存目前執行緒的本地數據,程式指針等等信息,以及載入下一個執行緒的本地數據,程式指針去執行。這個切換稱之為「上下文切換」。這個CPU從執行一個執行緒的上下文切換到執行另外一個執行緒的上下文。

上下文切換不是低廉的。你不想在線程之間切換超過必須的。

增加資源消耗

一個執行緒為了運行需要電腦的一些資源。此外CPU的一個執行緒需要一些記憶體去保持它的本地堆疊。在作業系統管理執行緒的內部可能也會佔去一些資源。嘗試著創建100個執行緒的程序,除了等什麼都不做,然後看著當運行時候會消耗多少記憶體。


 以上就是Java 多執行緒代價的內容,更多相關內容請關注PHP中文網(www.php.cn)!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn