1. 程式人生 > >java多執行緒:5、Java對多執行緒的支援(二)執行緒優先順序

java多執行緒:5、Java對多執行緒的支援(二)執行緒優先順序

一、執行緒優先順序

在java當中,每一個執行緒都有一個優先順序,我們可以通過Thread當中的getPriority()方法、setPriority方法去得到一個執行緒的優先順序和設定一個執行緒的優先順序。 

設定執行緒優先順序,它的引數是一個整形。最小為1(Thread.MIN_PRIORITY),預設為5(Thread.NORM_PRIORITY),最高為10(Thread.MAX_PRIORITY)

並不一定要線上程start啟動之前進行設定,我們線上程啟動之後也可以設定修改執行緒的優先順序。

t05_執行緒的優先順序

MultiThread類

public class MultiThread {
	public static void main(String[] args) {
		MyThread mt = new MyThread();
		mt.setPriority(Thread.MAX_PRIORITY);//執行緒啟動之前或之後設定都可以
		mt.start();
		
		int index = 0;
		while(true){
			
			if(index++ == 1000 )
					break;//到一千次就終止,跳出迴圈。 注意:if沒有大括號
			
				System.out.println("main:"+Thread.currentThread().getName());
				
		}
		
	}
	
}

MyThread類

public class MyThread extends Thread {
	@Override
	public void run() {
		
		while(true){
			System.out.println(getName());
//			yield();//暫停當前執行緒,讓其他執行緒執行
		} 
		
	}
}

在java當中如果某個執行緒優先順序較高,那麼他將始終獲得優先執行的機會。

 

輸出觀察:

mt執行緒設定優先順序    mt.setPriority(Thread.MAX_PRIORITY);   它始終獲得優先執行的機會。

我們開啟 yield()方法 的註釋,即使執行設定了yield方法,它也始終會獲得優先執行的機會。

一般只有可能在我們強制終止程式的時候,有可能會發現優先順序較低的執行緒執行幾次。