java 多線程中run方法和start方法的區別

run方法和start方法的區別

區別:調用start方法bai實現多線程,而調用run方法沒有實現多線程du
Start:
用start方法來zhi啓動線程,真正實現了多線程運行,這時無需等待run方法體代碼執行完畢而直接繼續執行下面的代碼。通過調用Thread類的start()方法來啓動一個線程,這時此線程處於就緒(可運行)狀態,並沒有運行,一旦得到spu時間片,就開始執行run()方法,這裏方法run()稱爲線程體,它包含了要執行的這個線程的內容,Run方法運行結束,此線程隨即終止。
Run:
run()方法只是類的一個普通方法而已,如果直接調用Run方法,程序中依然只有主線程這一個線程,其程序執行路徑還是隻有一條,還是要順序執行,還是要等待run方法體執行完畢後纔可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。
總結:調用start方法方可啓動線程,而run方法只是thread的一個普通方法調用,還是在主線程裏執行。

1.run方法案例

// 創建線程方式一:繼承Thread類,重寫run()方法,調用start開啓線程
public class TestThread1 extends Thread {
    // start 是開啓線程 run是方法的調用
    @Override
    public void run() {
        // run方法線程體
        for (int i = 0; i < 20; i++) {
            System.out.println("我在看代碼--"+i);
        }
    }

    public static void main(String[] args) {
        // main線程,主線程

        // 創建一個線程對象
        TestThread1 testThread1 = new TestThread1();

        // 調用run()方法
        testThread1.run();

        for (int i = 0; i < 20; i++) {
            System.out.println("我在學習多線程--"+i);
        }
    }
}

輸出結果:在這裏插入圖片描述
我們可以看見先執行完run方法後再執行主線程

  1. start方法案例
// 創建線程方式一:繼承Thread類,重寫run()方法,調用start開啓線程
public class TestThread1 extends Thread {
    // start 是開啓線程 run是方法的調用
    @Override
    public void run() {
        // run方法線程體
        for (int i = 0; i < 20; i++) {
            System.out.println("我在看代碼--"+i);
        }
    }

    public static void main(String[] args) {
        // main線程,主線程

        // 創建一個線程對象
        TestThread1 testThread1 = new TestThread1();

        // 調用start()方法開啓線程
        testThread1.start();

        for (int i = 0; i < 20; i++) {
            System.out.println("我在學習多線程--"+i);
        }
    }
}

輸出結果:
在這裏插入圖片描述我們發現兩個交錯輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章