天天看點

java多線程是同時的麼_java多線程并發(并不是同時運作)

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