線程實(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é)果是: