Java中啓動線程start和run方法的區別

         Java中啓動線程有兩種方式,繼承Thread類以及實現接口Runnable,因爲Java沒法實現多重繼承,故常常經過實現接口Runnable來建立線程。可是不管哪一種方式建立均可以經過start()和run( )方法來啓動線程,下面就來介紹一下二者的區別。java

         start():經過該方法啓動線程的同時也建立了一個線程,真正實現了多線程,這是無需等待run()方法中的代碼執行完畢就能夠直接執行下面的代碼,經過start建立的線程處於可運行狀態,當獲得CPU時間片後就會執行其中的run方法,這裏方法run()稱爲線程體,它包含了要執行的這個線程的內容,Run方法運行結束,此線程隨即終止。多線程

        run():經過run方法啓動線程其實就是調用一個類中的方法,並無建立一個線程,程序中仍是隻有主線程,仍是要順序執行,仍是要等待run方法體執行完畢後纔可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。ide

        下面是兩種建立線程的代碼示例:spa

經過繼承Thread類
線程

package com.Test.Tread;

public class ThreadDemo02 extends Thread{
    public void run(){
        System.out.println("線程啓動!");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       ThreadDemo02 thread = new ThreadDemo02();
       thread.start();
    }

}

經過實現Runnable接口code

package com.Test.Tread;

public class ThreadDemo03 implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("線程啓動02");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       Thread thread01 = new Thread(new ThreadDemo03());
       thread01.start();
    }

}
相關文章
相關標籤/搜索