天天看點

java多線程之:建立開啟一個線程的開銷

---->關于時間,建立線程使用是直接向系統申請資源的,這裡調用系統函數進行配置設定資源的話耗時不好說。

---->關于資源,Java線程的線程棧所占用的記憶體是在Java堆外的,是以是不受java程式控制的,隻受系統資源限制,預設一個線程的線程棧大小是1M(當讓這個可以通過設定-Xss屬性設定,但是要注意棧溢出問題),但是,如果每個使用者請求都建立線程的話,1024個使用者光線程就占用了1個G的記憶體,如果系統比較大的話,一下子系統資源就不夠用了,最後程式就崩潰了。

--->對作業系統來說,建立一個線程的代價是十分昂貴的, 需要給它配置設定記憶體、列入排程,同時線上程切換的時候還要執行記憶體換頁,CPU 的緩存被 清空,切換回來的時候還要重新從記憶體中讀取資訊,破壞了資料的局部性。