1.線程狀態 新生狀態->就緒狀態->運行狀態->死亡狀態 註: 1.線程死亡後不能重新開啟 2.線程阻塞後進入就緒狀態 註: 1.每個線程new一個對象後,都有自己的工作空間,一個工作空間匹配一個線程 2.進入就緒狀態的四種方法:start方法,阻塞接觸,yield方法,jvm將cpu從本地線程切 ...
1.線程狀態
新生狀態->就緒狀態->運行狀態->死亡狀態
註:
1.線程死亡後不能重新開啟
2.線程阻塞後進入就緒狀態
註:
1.每個線程new一個對象後,都有自己的工作空間,一個工作空間匹配一個線程
2.進入就緒狀態的四種方法:start方法,阻塞接觸,yield方法,jvm將cpu從本地線程切換到其他線程
3.進入阻塞狀態的四種原因:sleep,wait,join,io等操作
4.進入死亡狀態的2種原因:代碼執行結束,線程強制結束(stop/destory)
2.線程方法
1.sleep():
使線程停止運行一段時間,將處於阻塞狀態
如果調用了sleep方法之後,沒有其他等待執行的進程,這個時候當前線程不會馬上回覆執行
2.join():
阻塞指定線程等到另一個線程完成以後再繼續執行
3.yield():
讓當前正在執行線程暫停,不是阻塞線程,而是將線程轉入就緒狀態
調用了yield方法之後,如果沒有其他等待執行的線程,此時當前線程就會馬上恢復執行
4.setDaemon():
可以將指定的線程設置程後臺線程,守護線程
創建用戶線程的線程結束時,後臺線程也隨之消亡
只能線上程啟動之前把它設為後臺線程
5.setPriority(int newPriority) getPriority():
線程的優先順序代表的是概率
範圍從1到10,預設為5
6.stop():
不推薦使用
3.線程停止
不使用JDK提供的stop()/destory()
提供一個boolean型的終止變數,當這個變數置為false,則終止線程運行
例:
4.線程暫停
sleep(時間)指定當前線程阻塞的毫秒數
sleep存在異常InterruptedException
sleep時間達到後線程進入就緒狀態
sleep可以模擬網路延時,倒計時等
每一個對象都有一個鎖,sleep不會釋放鎖
例: