線程的優先級

            1、介紹       

   在Java中,每個線程都有一個優先級,默認是一個線程繼承它的父線程的優先級。一個線程的默認優先級爲NORM_PRIORITY = 5java

  設置優先級的方法setPriority() ,可設置的值以下:  ide

1
2
3
static int MAX_PRIORITY = 10 ; //線程能夠具備的最高優先級(執行機率最高)
static int MIN_PRIORITY = 1 ; //線程能夠具備的最低優先級(執行機率最低)
static int NORM_PRIORITY = 5 //分配給線程的默認優先級

   線程的優先級:不是說哪一個線程優先執行,若是設置某個線程的優先級高。那就是有可能被執行的機率高。並非優先執行
測試


 2、實例       

線程優先級實例代碼:這裏設置線程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次繼承


 3、總結       

一、每一個線程都有一個默認的優先級,默認狀況下是NORM_PRIORITY = 5ci

二、線程的優先級表示的是被執行的機率,並非絕對的優先執行。get

三、設置線程優先級的方法setPriority(Thread.MAX_PRIORITY);





相關文章
相關標籤/搜索