1、 新建狀態。 當建立thread類的乙個例項(物件)時,此執行緒進入新建狀態(未被啟動)。
2、 就緒:執行緒已經被啟動,正在等待被分配給cpu時間片,也就是說此時執行緒正在就緒佇列中排隊等候得到cpu資源
3、執行:執行緒獲得cpu資源正在執行任務(run()方法),此時除非此執行緒自動放棄cpu資源或者有優先順序更高的執行緒進入,執行緒將一直執行到結束。
4、死亡:自然終止:正常執行run()方法後終止
異常終止:呼叫stop()方法讓乙個執行緒終止執行
5、 堵塞
a) sleep() 將程式睡眠。 當時間到了。恢復到就緒狀態
b) wait() 呼叫motify()(喚醒執行緒)方法回到就緒狀態
c) suspend() 被另乙個執行緒所阻塞 resume()方法恢復
6、 執行緒的優先順序
a) 把執行緒從就緒狀態進入執行狀態的過程叫做執行緒排程,負責排程工作的機構叫做排程管理器
b) 優先順序 執行緒的優先順序的取值範圍是1—10
i. max_priority
ii. norm_priority
iii. min_priority
iv. 得到貨修改執行緒的優先順序 final intgetpriority() final voidsetpriority(int newpriority)
7、 常用方法 run() start() sleep(long t) sleep(long millis,int nanos) nanos引數為有納秒
a) yield() 暫停執行緒,讓步的方法 當前執行緒進入就緒狀態,不是堵塞狀態。
b) join() 方法 讓執行緒加入執行,執行某一線程join方法的執行緒會被凍結,等待某一線程執行結束,該執行緒才會恢復到可執行狀態
c) wait() 與notify() 方法 是成對。 暫停和恢復
d) interrupt(): 清楚執行緒的凍結狀態 強制清楚
e) stop() 有風險,終止。已過時
停止方法: 1。在迴圈設定標誌,判斷用break跳出迴圈
2.執行緒處於堵塞狀態, interrupt() 中斷執行緒interrupted()測試是否中斷。在第一次呼叫已清除了其中斷狀態之,且第二次呼叫檢驗完中斷狀後態前,當前執行緒再次中斷的情況除外,如果連續兩次呼叫該方法,則第二次呼叫將返回 false isiterrupted() 此時執行緒是否已經中斷,執行緒的中斷狀態不受該方法的影響。
f) isalive() 判斷是否為活動的執行緒。
h) currentthread() 獲取到當前的執行緒物件 然後 t1.getname() 獲得執行緒名字
9、執行緒的同步 synchronization
互斥鎖 標記,這個標記用來保證在任一時刻,只能有以個執行緒訪問該物件 關鍵字 synchronized 用來與物件的互斥鎖聯絡
加鎖方式 synchronized(this){} 在方法宣告中,表示整個方法為同步方法
publicsynchronized char pop(){} 同步方法只有乙個。
鎖的是物件。
好處 解決了執行緒安全問題
弊端 降低了執行效率
同步巢狀,容易出現死鎖。
解決死鎖 wait() 方法
執行緒的生命週期與執行緒的同步
20110906 執行緒的生命週期和執行緒的同步 1 新建狀態。當建立thread類的乙個例項 物件 時,此執行緒進入新建狀態 未被啟動 2 就緒 執行緒已經被啟動,正在等待被分配給cpu時間片,也就是說此時執行緒正在就緒佇列中排隊等候得到cpu資源 3 執行 執行緒獲得cpu資源正在執行任務 ru...
執行緒的生命週期
1.新建 threadd thread new thread runnable 2.就緒 thread.start 將執行緒放入就緒等待佇列中,等待cpu時間片的分配 3.執行 獲取到cpu時間片,一直執行到結束,除非有優先順序更高執行緒進入或者自動放棄cpu資源 4.死亡 正常結束或被其他執行緒殺...
執行緒的生命週期
如上圖 new乙個thread,則執行緒處於新建狀態。呼叫start 則處於就緒狀態,至於什麼時候執行,屬於系統排程的事情了,當run 或者call 執行體執行完成後,處於死亡狀態。執行狀態的執行緒,可能遇到以下情況而被阻塞 sleep 方法 io阻塞 等待同步鎖 等待通知 suspend 呼叫yi...