操作系統基本采用時分的調度運行線程,操作系統會分出一個個時間片,線程會被分配到若干個時間片,當線程的時間片用完了就會發生線程調度,并且等待著下次調度,線程被分配到的時間片多少也就決定了線程使用處理器資源的多少,而線程優先級就是決定線程能夠分配多少處理器資源的線程屬性。
在Java多線程中,通過一個整形變量priority來控制優先級,優先級的范圍從1-10.默認是5,優先級越高越好。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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+ "次" ); } } } |
執行結果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
線程 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線程對于優先級的決定。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/liaodehong/article/details/69831003