第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
執行緒的順序
在前篇使用了 join() 來控制安排執行緒。那麼執行緒一多,我們可以安排哪些執行緒優先順序是較高的。
Java 執行緒的優先順序是使用 1~10來表示,數字大代表優先權較高(意指先執行)。
有兩個函數與優先權相關:
    setPriority() 用來設定優先順序
    getPriority() 用來取得順序之值
而在 setPriority() 的引數可以使用以下三個常用的代碼:
    MAX_PRIORTY 最大優先權數值
    MIN_PRIORTY 最小優先權數值
    NORM_PRIORTY 系統預設
透過範例來了解一下用法吧~
修改前一篇的範例:此次建立5個執行緒,並在執行前設定優先權。
首先建立5個執行緒
1
multi_Test apple=new multi_Test("red");
2
multi_Test banana=new multi_Test("yellow");
3
multi_Test grape=new multi_Test("purple");
4
multi_Test cloud =new multi_Test("white");
5
multi_Test grass=new multi_Test("green");
Copied!
設定優先權(使用常見的代碼)
1
apple.setPriority(Thread.MAX_PRIORITY);
2
banana.setPriority(Thread.MIN_PRIORITY);
Copied!
除了使用常見代碼之外,也可以直接設定1~10的引數
1
cloud.setPriority(3);
2
grass.setPriority(6);
Copied!

完整程式碼

1
class multi_Test
2
{
3
private String name;
4
public multi_Test(String str)
5
{
6
name=str;
7
}
8
public void show()
9
{
10
for(int i=0;i<3;i++)
11
{
12
try
13
{
14
sleep((int)(1000*Math.random()));
15
}
16
catch(InterruptedException e){}
17
System.out.println(name+" 執行中"+this.getPriority());
18
}
19
}
20
}
21
22
public class multi_thread_3
23
{
24
public static void main(String args[])
25
{
26
multi_Test apple=new multi_Test("red");
27
multi_Test banana=new multi_Test("yellow");
28
multi_Test grape=new multi_Test("purple");
29
multi_Test cloud =new multi_Test("white");
30
multi_Test grass=new multi_Test("green");
31
32
apple.setPriority(Thread.MAX_PRIORITY);
33
banana.setPriority(Thread.MIN_PRIORITY);
34
cloud.setPriority(3);
35
grass.setPriority(6);
36
37
apple.start();
38
banana.start();
39
grape.start();
40
cloud.start();
41
grass.start();
42
}
43
}
Copied!
Last modified 9mo ago
Copy link