1. 程式人生 > >執行緒優先順序(菜鳥玩執行緒)

執行緒優先順序(菜鳥玩執行緒)

執行緒的優先順序

在作業系統中,執行緒可以劃分為優先順序,優先順序較高的執行緒得到的CPU資源較多,也就是CPU優先執行優先順序較高的執行緒物件中的任務。

設定執行緒的優先順序使用setPriority()方法。

執行緒優先順序的繼承特性

執行緒的優先順序具有繼承性,比如A執行緒啟動B執行緒,則B執行緒的優先順序與A是一樣的。

執行緒優先順序的規則性

高優先順序總是大部分先執行完,但不代表高優先順序的執行緒全部先執行完。

且執行緒的優先順序與程式碼執行順序無關。

執行緒優先順序具有隨機性

優先順序較高的執行緒並不一定每一次都執行完run()方法中的任務。

看誰執行的快

自定義執行緒類
package
com.thread13; public class MyThread1 extends Thread { private int count = 0; public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Override public void run() { while (true) { count++; }
} }
package com.thread13;

public class MyThread2 extends Thread {

    private int count = 0;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    @Override
    public void run() {
        while (true) {
            count++
; } } }
啟動類
package com.thread13;

public class Run {
    public static void main(String[] args) throws InterruptedException {
        MyThread1 myThread1 = new MyThread1();
        //設定優先順序為 5-3
        myThread1.setPriority(Thread.NORM_PRIORITY - 3);
        myThread1.start();

        MyThread2 myThread2 = new MyThread2();
        //設定優先順序為 5+3
        myThread2.setPriority(Thread.NORM_PRIORITY + 3);
        myThread2.start();

        Thread.sleep(20000);

        myThread1.stop();
        myThread2.stop();

        System.out.println("a = " + myThread1.getCount());
        System.out.println("b = " + myThread2.getCount());
    }
}

執行結果
a = 948465056
b = 1029878491
結論

優先順序高的執行緒執行快。