淺談線程的狀態

首先可以看一些關於線程的狀態圖

有六種狀態。

就這個圖,我們簡單的說一下管理線程的常用方法。

 Thread類的構造方法:調用Thread類的構造方法之後,線程僅處於創建狀態,並沒有獲得任何資源。

Thread.start(): 當成功調用Thread類的start()方法後,線程將進入就緒狀態,這時線程除沒有擁有CPU時間片之外已經獲得了其他所有的運行資源。當JVM線程調度器根據線程的優先級選中該線程時,該線程獲得CPU時間片,正式進入運行狀態。

Thread.yield(): 當處於運行的線程調用這個方法後,線程所擁有的CPU時間片就被剝奪了,回到了就緒狀態,等待JVM線程調度器的調度。

Thread.sleep():當處於運行的線程調用這個方法後,調用後會在指定的時間內進入休眠狀態。當休眠結束,或者捕獲並響應由於Thread.interrupt()引起的InterruptedException異常後,線程回到運行狀態。

 Object.wait():調用Object的wait方法可以讓當前線程進入等待狀態,只有當其他線程調用了此Object的notify、或notifyAll方法,或者wait(毫秒數)到達了指定的時間後,纔會被激活繼續執行,notify只是隨機找wait此Object的一個線程,而notifyAll則是通知wait此Object的所有線程。在Sun JDK中,object.wait還有可能被假喚醒,因此通過在object.wait被喚醒後,應再次確認需要等待的狀態是否變更了。

Object.notify():如果線程不處於就緒(等待)狀態,調用這個方法不起作用。

Thread.suspend():處於運行狀態的線程調用這個方法後,將狀態改爲掛起狀態。只能和Thread.resume()配合使用,已被禁用。

Thread.resume():將處於掛起狀態的線程處於運行狀態,只能和suspend()配合使用,現在已禁用。

Thread.stop():終止線程,線程將釋放佔用的全部資源。方法已被禁用。

Thread.join():結束線程,並等待方法參數指定的時間段。在等待期間,如果線程已經結束,則立即返回。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章