400-688-0112
掌握J(rèn)AVA線程運(yùn)行機(jī)制是成為合格開(kāi)發(fā)工程師的必經(jīng)之路,本課程通過(guò)企業(yè)級(jí)項(xiàng)目案例教學(xué),幫助學(xué)員透徹理解線程狀態(tài)轉(zhuǎn)換原理。
| 狀態(tài)類型 | 觸發(fā)條件 | 特性說(shuō)明 |
|---|---|---|
| NEW | Thread實(shí)例化后 | 尚未啟動(dòng)的初始狀態(tài),未分配系統(tǒng)資源 |
| RUNNABLE | start()方法調(diào)用 | 包含ready和running兩種子狀態(tài) |
| BLOCKED | 等待監(jiān)視器鎖 | 同步代碼塊/方法爭(zhēng)奪鎖失敗 |
當(dāng)線程調(diào)用wait()方法時(shí),會(huì)立即釋放持有的對(duì)象鎖,進(jìn)入WAITING狀態(tài)等待其他線程的notify/notifyAll喚醒。這種機(jī)制在生產(chǎn)者-消費(fèi)者模式中具有重要應(yīng)用價(jià)值。
需特別注意RUNNABLE狀態(tài)包含就緒(ready)和執(zhí)行(running)兩種子狀態(tài),當(dāng)線程獲得CPU時(shí)間片后才會(huì)進(jìn)入實(shí)際運(yùn)行階段。yield()方法會(huì)使線程從running轉(zhuǎn)為ready,但并不能控制具體的調(diào)度順序。
終止?fàn)顟B(tài)的線程不可通過(guò)start()方法重啟,重復(fù)調(diào)用將拋出IllegalThreadStateException異常。正確做法是創(chuàng)建新的Thread實(shí)例來(lái)實(shí)現(xiàn)線程復(fù)用需求。