Java 線程優先級詳解及實例
操作系統基本采用時分的調度運行線程,操作系統會分出一個個時間片,線程會被分配到若干個時間片,當線程的時間片用完了就會發生線程調度,并且等待著下次調度,線程被分配到的時間片多少也就決定了線程使用處理器資源的多少,而線程優先級就是決定線程能夠分配多少處理器資源的線程屬性。
在Java多線程中,通過一個整形變量priority來控制優先級,優先級的范圍從1-10.默認是5,優先級越高越好。
public class Priority { public static void main(String[] args) { Thread t1 = new Mythread(); t1.setName("線程1"); t1.setPriority(1); //設置優先級 Thread t2 = new Mythread(); t2.setName("線程2"); t2.setPriority(10); //設置優先級 t1.start(); t2.start(); } } class Mythread extends Thread{ @Override public void run() { for(int i=0;i<10;i++){ System.out.println(getName()+"執行"+i+"次"); } } }
執行結果:
線程2執行0次 線程2執行1次 線程2執行2次 線程2執行3次 線程2執行4次 線程2執行5次 線程2執行6次 線程2執行7次 線程2執行8次 線程2執行9次 線程1執行0次 線程1執行1次 線程1執行2次 線程1執行3次 線程1執行4次 線程1執行5次 線程1執行6次 線程1執行7次 線程1執行8次 線程1執行9次
我們可以看到系統會優先執行線程1。但是也并不是每次都會優先執行線程1的,特別是兩個線程優先級區別不是很大的時候,線程優先級基本上作用不大。線程優先級不能作為程序正確性的依賴,因為操作系統可以完全不用理會java線程對于優先級的決定。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答