多執行緒-執行緒排程及獲取和設定執行緒優先順序

ZHOU_VIP發表於2017-05-31

package cn.itcast_04;

public class ThreadPriority extends Thread {
	@Override
	public void run() {
		for (int x = 0; x < 100; x++) {
			System.out.println(getName() + ":" + x);
		}
	}
}


package cn.itcast_04;

/*
 * 我們的執行緒沒有設定優先順序,肯定有預設優先順序。
 * 那麼,預設優先順序是多少呢?
 * 如何獲取執行緒物件的優先順序?
 * 		public final int getPriority():返回執行緒物件的優先順序
 * 如何設定執行緒物件的優先順序呢?
 * 		public final void setPriority(int newPriority):更改執行緒的優先順序。 
 * 
 * 注意:
 * 		執行緒預設優先順序是5。
 * 		執行緒優先順序的範圍是:1-10。
 * 		執行緒優先順序高僅僅表示執行緒獲取的 CPU時間片的機率高,但是要在次數比較多,或者多次執行的時候才能看到比較好的效果。
 * 		
 * IllegalArgumentException:非法引數異常。
 * 丟擲的異常表明向方法傳遞了一個不合法或不正確的引數。 
 * 
 */
public class ThreadPriorityDemo {
	public static void main(String[] args) {
		ThreadPriority tp1 = new ThreadPriority();
		ThreadPriority tp2 = new ThreadPriority();
		ThreadPriority tp3 = new ThreadPriority();

		tp1.setName("東方不敗");
		tp2.setName("嶽不群");
		tp3.setName("林平之");

		// 獲取預設優先順序
		//System.out.println(tp1.getPriority()); //5
		//System.out.println(tp2.getPriority()); //5
		//System.out.println(tp3.getPriority()); //5

		// 設定執行緒優先順序
		// tp1.setPriority(100000);//IllegalArgumentException:非法引數異常。
		
		// 設定正確的執行緒優先順序
		tp1.setPriority(10);
		tp2.setPriority(1);

		tp1.start();
		tp2.start();
		tp3.start();
	}
}




相關文章