在Java中,每個線程都有一個優先級,默認是一個線程繼承它的父線程的優先級。一個線程的默認優先級爲NORM_PRIORITY = 5java
設置優先級的方法setPriority() ,可設置的值以下: ide
1
2
3
|
static
int
MAX_PRIORITY =
10
;
//線程能夠具備的最高優先級(執行機率最高)
static
int
MIN_PRIORITY =
1
;
//線程能夠具備的最低優先級(執行機率最低)
static
int
NORM_PRIORITY =
5
;
//分配給線程的默認優先級
|
線程的優先級:不是說哪一個線程優先執行,若是設置某個線程的優先級高。那就是有可能被執行的機率高。並非優先執行
測試
線程優先級實例代碼:這裏設置線程1爲最高優先級(被執行的機率高) 設置線程2爲最低優先級this
這裏設置了線程1最高和線程2最低優先級後,並非說線程1就優先執行等到線程1執行完才執行線程2。而是說線程1被執行的機率高。spa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
//線程類
public
class
PriorityThread
implements
Runnable{
private
boolean
flag =
true
;
private
int
num=
0
;
@Override
public
void
run() {
while
(flag){
System.out.println(Thread.currentThread().getName()+
"-->"
+num++);
}
}
public
void
stop(){
this
.flag = !
this
.flag;
}
}
//測試線程優先級
public
class
PriorityDemo {
public
static
void
main(String[] args)
throws
InterruptedException {
PriorityThread it1 =
new
PriorityThread();
PriorityThread it2 =
new
PriorityThread();
Thread proxy1 =
new
Thread(it1,
"線程1"
);
Thread proxy2 =
new
Thread(it2,
"線程2"
);
proxy1.setPriority(Thread.MAX_PRIORITY);
//設置爲最高優先級
proxy2.setPriority(Thread.MIN_PRIORITY);
//設置爲最低優先級
proxy1.start();
proxy2.start();
Thread.sleep(
1000
);
it1.stop();
it2.stop();
}
}
|
執行結果以下:線程
線程1-->47755 統計共執行了4685次code
線程2-->19211 統計共執行了1469次繼承
一、每一個線程都有一個默認的優先級,默認狀況下是NORM_PRIORITY = 5ci
二、線程的優先級表示的是被執行的機率,並非絕對的優先執行。get
三、設置線程優先級的方法setPriority(Thread.MAX_PRIORITY);