併發程式設計(1) 執行緒基本狀態和執行緒的建立

2021-08-21 05:57:22 字數 1814 閱讀 4315

1.新建狀態(new):執行緒物件建立後將納入新建狀態. thread t = new thread();

2.就緒狀態(runnable):呼叫start()進入就緒狀態

3.執行狀態(running):cpu開始排程處於執行狀態的執行緒,此執行緒才真正執行

4.阻塞狀態(blocked):處於執行時的執行緒由於某種原因暫時放棄了對cpu的使用權

(1)等待阻塞:執行wait()方法,當呼叫wait()時,會把當前鎖釋放,然後讓出cpu,進入等待阻塞狀態,當呼叫notify/notifyall方法時,會喚醒乙個處於等待該物件鎖的執行緒

(2)同步阻塞:執行緒在獲取synchronized同步鎖失敗(被其它執行緒占用)進入同步阻塞狀態

(3)其它阻塞:thread類的靜態方法sleep會阻塞當前執行緒,在a中呼叫了b的join方法,表示b執行完才會繼續執行a,或發出i/o請求時也會阻塞執行緒

5.消亡狀態(dead):執行緒執行完或因異常推出run方法

1.繼承thread類,重寫run方法

public class demo1 extends thread 

public static void main(string args)

}

2.實現runnable介面,實現run方法

public class demo2 implements runnable 

public static void main(string args)

}

demo2不代表乙個執行緒,而是乙個執行緒任務,需要將這個runnable介面的實現類傳遞給thread類,thread類的run方法執行時首先會檢查target是否為空,如果為空就呼叫thread類的run方法,上面的1中重寫了run方法,所以呼叫的重寫的run方法,這裡的2中在new thread時傳入了乙個target,所以target不為空,呼叫的是target的run方法

@override

public void run()

}

3.使用匿名內部類

public class threaddemo

}.start();

new thread(new runnable()

}).start();

}}

如果寫一塊(執行結果是sub...)

public static void main(string args) 

})}.start();

}

4.帶返回值的執行緒(實現callable介面,實現call方法)

public class callablethread implements callable

public static void main(string args) throws executionexception, interruptedexception

}

實現callable介面,相較於實現runnable介面的方式,方法可以有返回值,並且可以丟擲異常

fulturetask介面繼承了runnable介面和future介面

fulture介面提供了非同步計算結果

5.定時器

public class timerthread 

},0,1000);

}}

6.執行緒池的實現

public class threadpoll 

});}

}}

Java併發程式設計 執行緒的基本狀態

執行緒基本上有5種狀態,分別是 new runnable running blocked dead。當執行緒物件對建立後,即進入了新建狀態,如 thread t new mythread 當呼叫執行緒物件的start 方法 t.start 執行緒即進入就緒狀態。處於就緒狀態的執行緒,只是說明此執行緒...

Java併發程式設計 執行緒的狀態和執行緒的建立

執行緒的狀態 新建狀態 new 新建立了乙個執行緒物件。就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於 可執行執行緒池 中,變得可執行,只等待獲取cpu的使用權。即在就緒狀態的程序除cpu之外,其它的執行所需資源都已全部獲得。執行狀態 ru...

執行緒的基本狀態 執行緒例題

x 比如在該執行緒之前有乙個執行緒呼叫了join,搶占了cpu執行權,剛好搶占的執行緒呼叫了interupt,導致其執行緒中斷,將cpu讓出,原來執行緒可以從阻塞到就緒態,繼續搶cpu y 有資格進行搶鎖活動 主要是平時很少用到synchronized方法,多實踐一下 1 子執行緒迴圈10次,接著主...