線程實(shí)例化有兩種方式,一種是繼承Thread類,一種是實(shí)現(xiàn)Runnable接口。
    想啟動(dòng)線程只能通過(guò)Thread類的Start方法才能啟動(dòng)線程,啟動(dòng)Start方法只使線程進(jìn)入就緒狀態(tài),并不能進(jìn)入運(yùn)行狀態(tài),真正要進(jìn)入運(yùn)行狀態(tài)是需要Java虛擬機(jī)調(diào)用run()方法才能進(jìn)入運(yùn)行狀態(tài)(何時(shí)運(yùn)行不受人為控制,要根據(jù)CPU當(dāng)時(shí)的狀態(tài)決定)。
    自定義的線程類要想實(shí)現(xiàn)自己的邏輯處理,要將代碼寫(xiě)入run()方法里,實(shí)現(xiàn)方法重寫(xiě),遮陽(yáng)就能實(shí)現(xiàn)自己想要的功能。

    我想顯示三個(gè)不同的線程的名字和休息時(shí)間(時(shí)間分別是100,200,300)。
    下面附實(shí)例化線程的兩種方式:
     實(shí)現(xiàn)Runnable接口的方式:
class MyThread implements Runnable{

    
private String name;
    
private int time;
    
public MyThread(String name,int time){
        
this.name = name;
        
this.time =time;
    }

    
public void run() {

        
try {
            Thread.sleep(
this.time);
        }
 catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(
"name="+this.name+"    休息時(shí)間"+this.time);
    }

    
}

public class Test1 {

    
public static void main(String[] args) {
        Runnable mt1 
= new MyThread("1線程",100);
        Runnable mt2 
= new MyThread("2線程",200);
        Runnable mt3 
= new MyThread("3線程",300);
        
new Thread(mt1).start();
        
new Thread(mt2).start();
        
new Thread(mt3).start();
        
    }


}



    繼承Thread類的方式:
class MyThread extends Thread{

    
private int time;
    
public MyThread(String name,int time){
        
super(name);
        
this.time = time;
    }

    
public void run() {
        
try {
            Thread.sleep(
this.time);
        }
 catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(
"name="+this.getName()+"    休息時(shí)間"+this.time);
    }

    
}

public class Test {

    
public static void main(String[] args) {

        MyThread t1 
= new MyThread("1線程",100);
        MyThread t2 
= new MyThread("2線程",200);
        MyThread t3 
= new MyThread("3線程",300);
        t2.start();
        t3.start();
        t1.start();
    }

}



運(yùn)行結(jié)果是: