繼承Thread類使用多線程


java實現多線程有兩種方式,一種是繼承Thread類,另外一種就是實現Runnable接口。

兩種實現方法的優缺點:

  使用Thread類實現多線程局限性就是不支持多繼承,因為java是不支持類多繼承的,除此之外兩種多線程沒有任何區別。

  (如果你想創建線程的類已經有一個父類了,那么你只能實現Runnable接口實現來多線程)

知識點一:多線程的執行順序是隨機的

  代碼的運行結果與代碼的執行順序是無關的。簡單點說,就是多線程的執行順序是隨機的,這個是要看CPU調哪個,這個是不確定的。

下面我們可以看這段代碼:

public class Test01 extends Thread {

    @Override
    public void run() {
        super.run();
        System.out.println(1111);
    }


    public static void main(String[] args) {
        Test01 test01 = new Test01();
        test01.start();
        System.out.println("運行結束");
    }
}

執行結果:

1111
運行結束

Process finished with exit code 0

但是看完之后好像沒什么雞兒的感覺.....

那么再看下面的吧,同時運行兩條線程,每條線程循環並打印出自己的線程名字:

/**
 * 兩條線程同時運行,並輸出各個線程的名字
 */
public class Test01 extends Thread {

    @Override
    public void run() {
        super.run();
        for (int i = 0; i < 1000; i++) {
            System.out.println("run=" + Thread.currentThread().getName());
        }

    }

    public static void main(String[] args) {
        Test01 test01 = new Test01();
        test01.setName("線程");
        test01.start();
        for (int i = 0; i < 1000; i++) {
            System.out.println("run=" + Thread.currentThread().getName());
        }
    }
}

因為各打印出1000次,所以我就復制一些有特點的打印語句吧:

run=線程
run=線程
run=main
run=線程
run=線程
run=線程
run=線程
run=線程
run=main
run=線程
run=線程
run=線程
run=線程
run=main

這次看到了么?雖然線程同時執行,但並不是有規律的,這個要看CPU調哪個線程,是無法控制的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM