天天看點

多線程_線程排程及擷取和設定線程優先級

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());
    // System.out.println(tp2.getPriority());
    // System.out.println(tp3.getPriority());

    // 設定線程優先級
    // tp1.setPriority(1000);

    // 設定正确的優先級
    tp1.setPriority(10);
    tp2.setPriority(1);

    tp1.start();
    tp2.start();
    tp3.start();
  }
}      
package cn.itcast_04;

public class ThreadPriority extends Thread {

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

}