限制線程優先級和調度 Java 線程模型涉及可以動態更改的線程優先級
本質上
線程的優先級是從
到
之間的一個數字
數字越大表明任務越緊急
JVM 標准首先調用優先級較高的線程
然後才調用優先級較低的線程
但是
該標准對具有相同優先級的線程的處理是隨機的
如何處理這些線程取決於基層的操作系統策略
在某些情況下
優先級相同的線程分時運行
在另一些情況下
線程將一直運行到結束
請記住
Java 支持
個優先級
基層操作系統支持的優先級可能要少得多
這樣會造成一些混亂
因此
只能將優先級作為一種很粗略的工具使用
最後的控制可以通過明智地使用 yield() 函數來完成
通常情況下
請不要依靠線程優先級來控制線程的狀態
小結 本文說明了在 Java 程序中如何使用線程
像是否應該使用線程這樣的更重要的問題在很大程序上取決於手頭的應用程序
決定是否在應用程序中使用多線程的一種方法是
估計可以並行運行的代碼量
並記住以下幾點
使用多線程不會增加 CPU 的能力
但是如果使用 JVM 的本地線程實現
則不同的線程可以在不同的處理器上同時運行(在多 CPU 的機器中)
從而使多 CPU 機器得到充分利用
如果應用程序是計算密集型的
並受 CPU 功能的制約
則只有多 CPU 機器能夠從更多的線程中受益
當應用程序必須等待緩慢的資源(如網絡連接或數據庫連接)時
或者當應用程序是非交互式的時
多線程通常是有利的
基於 Internet 的軟件有必要是多線程的
否則
用戶將感覺應用程序反映遲鈍
例如
當開發要支持大量客戶機的服務器時
多線程可以使編程較為容易
在這種情況下
每個線程可以為不同的客戶或客戶組服務
從而縮短了響應時間
某些程序員可能在 C 和其他語言中使用過線程
在那些語言中對線程沒有語言支持
這些程序員可能通常都被搞得對線程失去了信心
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27278.html