Java多線程的建立(一)

  • 方法一:繼承Thread類實現

    1.建立一個類A,並繼承Thread類java

    2.重寫A的run()方法多線程

    3.建立A的實例對象b,即建立了線程對象ide

    4.使用b調用start()方法:啓動線程(會自動調用run方法)操作系統


例如:線程

package 多線程;
/*
*1.建立兩個線程分別完成100之內奇數偶數的輸出
*/

public class CreateThread {
    public static void main(String[] args){
        Test1 t1 = new Test1();
        Test2 t2 = new Test2();
        t1.start();
        t2.start();
    }
}
//輸出偶數
class Test1 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            if (i % 2 == 0) {
                System.out.println("線程一輸出偶數:"+i);
            }
        }
    }
}

//輸出奇數
class Test2 extends Thread{
    @Override
    public void run() {
        for(int i =0; i < 50;i++){
            if (i %2 != 0) {
                System.out.println("線程二輸出奇數:"+i);
            }
        }
    }
}
線程一輸出偶數:0
線程一輸出偶數:2
線程一輸出偶數:4
線程二輸出奇數:1
線程二輸出奇數:3
線程二輸出奇數:5
    ....
線程二輸出奇數:47
線程二輸出奇數:49
線程一輸出偶數:6
線程一輸出偶數:8

輸出結果省略了一部分,能夠看出來,兩個線程的執行是交替的,因此奇數和偶數也是交替輸出.code


  • 方法二:實現Runnable接口

    1. 定義子類A,實現Runnable接口。對象

    2. 子類中重寫Runnable接口中的run方法。繼承

    3. 經過Thread類含參構造器建立線程對象。接口

    4. 將Runnable接口的子類對象做爲實際參數傳遞給Thread類的構造器中。資源

    5. 調用Thread類的start方法:開啓線程,調用Runnable子類接口的run方法。


例如:

package 多線程;

public class CreateThread2 {
    public static void main(String[] args){
       Test3 t3 = new Test3();
       Test4 t4 = new Test4();

        //多態性
       Thread t = new Thread(t3);
       Thread tt = new Thread(t4);
       t.start();
       tt.start();
    }
}
//輸出偶數
class Test3 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            if (i % 2 == 0) {
                System.out.println("線程一輸出偶數:"+i);
            }
        }
    }
}
//輸出奇數
class Test4 implements Runnable{
    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            if (i % 2 != 0) {
                System.out.println("線程二輸出奇數:"+i);
            }
        }
    }
}
//結果和上一個相似
  • 注意事項

    1. 若是本身手動調用run()方法,那麼就只是普通方法,沒有啓動多線程模式。

    2. run()方法由JVM調用,何時調用,執行的過程控制都有操做系統的CPU 調度決定。

    3. 想要啓動多線程,必須調用start方法。
    4. 一個線程對象只能調用一次start()方法啓動,若是重複調用了,則將出現異常。

  • 比較兩種方法

    1.繼承Thread:線程代碼存放Thread子類run方法中。

    2.實現Runnable:線程代碼存在接口的子類的run方法。

    3.實現方式的好處:

    ​ ①避免了單繼承的侷限性

    ​ ②多個線程能夠共享同一個接口實現類的對象,很是適合多個相同線 程來處理同一份資源

  • 說在最後

    碼字不易,感謝支持。水平有限,不免錯漏和不許確,歡迎批評指正!

相關文章
相關標籤/搜索