線程五種狀態(tài)
new: implements runnable? ;extends thread
runnable:調(diào)用start()方法蔑歌。該狀態(tài)的線程位于可運(yùn)行線程池中,等待被線程調(diào)度選中涵防,獲取cpu 的使用權(quán)running:? 執(zhí)行代碼
blocked: 放棄cpu使用權(quán)贺待。等待阻塞:wait()方法同步阻塞:獲取同步鎖時(shí)佩抹,該鎖被占用酪碘,被放到鎖池中其他阻塞:運(yùn)行sleep,join 或發(fā)出io請(qǐng)求時(shí)么夫。
dead: 執(zhí)行完成或異常退出
sleep yield? join wait
sleep:當(dāng)前線程進(jìn)入阻塞者冤,但不釋放對(duì)象鎖,millis后線程自動(dòng)蘇醒進(jìn)入可運(yùn)行狀態(tài)
yield:當(dāng)前線程放棄獲取的cpu時(shí)間片魏割,由運(yùn)行狀態(tài)變會(huì)可運(yùn)行狀態(tài)譬嚣,讓OS再次選擇線程.能不能搶到不管join:在自己當(dāng)前線程加入你調(diào)用Join的線程(),本線程等待钞它。等調(diào)用的線程運(yùn)行完了拜银,自己再去執(zhí)行
wait:當(dāng)前線程釋放對(duì)象鎖,進(jìn)入等待隊(duì)列遭垛。依靠notify()/notifyAll()喚醒或者wait(long timeout)timeout時(shí)間到自動(dòng)喚醒
notify:喚醒在此對(duì)象監(jiān)視器上等待的單個(gè)線程尼桶,選擇是任意性的。notifyAll()喚醒在此對(duì)象監(jiān)視器上等待的所有線程
implements extends
extends:Java是單繼承機(jī)制锯仪,不允許同時(shí)繼承多個(gè)類
implements:多個(gè)線程共享一個(gè)對(duì)象
star run
star :變成可執(zhí)行狀態(tài)泵督,真正實(shí)現(xiàn)了多線程運(yùn)行run: 直接執(zhí)行
多線程就是分時(shí)利用CPU,宏觀上讓所有線程一起執(zhí)行 庶喜,也叫并發(fā)小腊。