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(); } }