
狀態(tài)轉(zhuǎn)換圖.png
Java源碼中給出了5中狀態(tài):
- New:新new出的一個(gè)線程對(duì)象,還沒有調(diào)用run方法;
- Runnable: 可運(yùn)行狀態(tài),線程可能在運(yùn)行,也可能在等待CPU資源;
- Blocked: 等待一個(gè)可重入鎖,或者等待一個(gè)鎖;
- Waiting: wait(), join()方法調(diào)用后進(jìn)入的一個(gè)狀態(tài),需要通過notifyAll或者notify進(jìn)行一個(gè)喚醒;
- TIMED_WAITING: sleep方法,wait(time)方法,或者join(time)方法調(diào)用后會(huì)進(jìn)入的一個(gè)狀態(tài),需要通過notifyAll或者notify進(jìn)行一個(gè)喚醒或者睡眠時(shí)間到會(huì)自動(dòng)進(jìn)入Runnable。
Blocked和waiting狀態(tài)的區(qū)別:
一個(gè)處理waiting狀態(tài)的線程被喚醒后進(jìn)入Blocked狀態(tài),競(jìng)爭(zhēng)synchronized鎖。
進(jìn)程的三種狀態(tài):
就緒態(tài):除CPU資源以外的其他資源已經(jīng)準(zhǔn)備好;
運(yùn)行態(tài):正在CPU運(yùn)行;
阻塞態(tài):等待一些其他時(shí)間的完成,比如I/O;
掛起(suspend)和阻塞的區(qū)別:
- 掛起是主動(dòng)行為(需要調(diào)用Resume方法主動(dòng)激活),阻塞是被動(dòng)行為(等待某件事件完成自動(dòng)恢復(fù)為就緒狀態(tài));
- 掛起不會(huì)釋放CPU資源,阻塞會(huì)釋放CPU資源;
- 操作系統(tǒng)任務(wù)調(diào)度會(huì)忽略掛起的任務(wù)。

進(jìn)程狀態(tài)轉(zhuǎn)換.png
進(jìn)程調(diào)度算法:FIFO,時(shí)間片輪轉(zhuǎn),短作業(yè)優(yōu)先,優(yōu)先級(jí)調(diào)度,多級(jí)隊(duì)列調(diào)度算法,多級(jí)隊(duì)列反饋調(diào)度算法
虛擬內(nèi)存:
非遞歸中序遍歷
RC和RR怎么實(shí)現(xiàn)
I/O類型:
BIO
NIO
AIO