JAVA 線程編程 —-什麼時候多線程可能不好(When Multiple Threads Might Not Be Good)

來源:互聯網
上載者:User

設計程式時候建立更多的線程不總是一個好主意。線程不是免費的;它們會帶來一些資源的負擔。

每個Thread 對象初始化時需要使用記憶體資源。除了對象本身使用的記憶體外,JVM還會為每個線程分配兩個執行呼叫堆疊(call stack)。一個堆棧用來跟蹤Java方法的調用和局部變數。另一個堆棧用來跟蹤本地代碼(native code)(典型是C語言代碼)的調用。

每個線程也需要處理器資源,也會給作業系統的線程調度增加負擔。當某個線程的執行被掛起,離開了處理器,另一線程進入處理器,它的執行被恢複。這就是所謂的環境切換(contex switch).CPU時鐘需要用來做環境切換,並且當有許多線程運行時,CPU刻度就變得相當可觀了。

除此之外,還包括線程啟動,停止和殺死一個線程對象。當線程用來完成一個簡單的背景工作時,這個代價就需要認真考慮了。比如,設計一個email程式,它每隔5分鐘來監測是否有新郵件。與其建立一個新線程每次來監測,還不如讓同一個線程持續運行,然後在每次查詢時,sleep 5分鐘。

當設計系統時添加額外線程時,這些代價需要認真考慮。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.