public class MultThread extends Thread{
String name;
//初始化name變量
public MultThread(String name){
this.name=name;
}
//線程
public void run(){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Interrupt exception");
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("thread name: "+name);
}
public static void main(String[] args) {
// TODO Autgenerated method stub
//建立多個線程
MultThread mt1=new MultThread("one");
MultThread mt2=new MultThread("two");
MultThread mt3=new MultThread("three");
mt1.start();
mt2.start();
mt3.start();
//thread name: one
//thread name: three
//thread name: two為什麼結果會是這樣啊,難道不應該是先啟動mt1麼
}
}
多線程的特點就是啟動後由虛拟機進行排程(java搶占模式),是以輸出的結果并不是有序的
下面的是我一些摘寫記錄,分享一下
Thread t=Thread.currentThread();----->獲得目前線程,即主線程 建立線程----》繼承java.lang.Thread或者實作java.lang.Runnable接口,并實作run()方法 建立的線程不會自動開始運作,必須通過start()方法啟動,如果不調用這個方法,線程不會自動運作,也就時說可以事先建立線程,在需要的事後才啟動他們 繼承Thread的線程 Mythread t=new Mythread(); t.start(); 實作Runnable()接口的線程 Myrun m=new Myrun(); Thread t=new Thread(m); t.start(); 用new語句建立線程對象處于建立狀态,在堆區中也配置設定了該線程對象的記憶體 當一個線程對象建立後,其他線程調用它的start()方法,該線程就近如就緒狀态,該線程位于可運作池中,等待獲得cpu使用權 運作狀态:改狀态的線程占用cpu執行程式代碼,隻有就緒狀态的線程才有機會轉到運作狀态 阻塞:因某種原因放棄cpu,暫時停止運作,當線程處于阻塞狀态時,java虛拟機不給線程配置設定cpu,直到線程重新進入就緒狀态,才有機會轉到運作狀态 死亡:當線程推出run方法時,就進入死亡狀态 http://wenku.baidu.com/view/d0d0f318a8114431b90dd8da.html