更新時(shí)間:2022-09-26 09:51:18 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1713次
java的進(jìn)程調(diào)度算法是什么?小編來告訴大家。
Process(進(jìn)程類),主要用來實(shí)例化各個(gè)不同的進(jìn)程
ProcessBlock(進(jìn)程控制塊類),用來為每個(gè)進(jìn)程分配PCB,該類實(shí)例化后為進(jìn)程類的類成員變量
ProcessControl(進(jìn)程控制類),為主類,用來調(diào)度進(jìn)程。
其中,在進(jìn)程調(diào)度中,聲明了三個(gè)隊(duì)列,分別為待插入進(jìn)程隊(duì)列(按到達(dá)時(shí)間從小到大排序),就緒隊(duì)列(按優(yōu)先級(jí)從大到小排序,按照到達(dá)時(shí)間先后進(jìn)行排序),完成隊(duì)列。都ArrayList類型變量。
程序開始時(shí)隨機(jī)為初始化5個(gè)進(jìn)程(程序太多不容易觀察運(yùn)行結(jié)果)
聲明時(shí)間變量t,while循環(huán)下調(diào)度程序一直運(yùn)行,每運(yùn)行一次,t++
然后循環(huán)判斷待插入隊(duì)列隊(duì)首進(jìn)程是否到達(dá),若到達(dá),則將該進(jìn)程插入到就緒隊(duì)列中,并從待插入隊(duì)列刪除該進(jìn)程;若沒有到達(dá),則從該循環(huán)中跳出
然后從就緒隊(duì)列中取出隊(duì)首進(jìn)程并分配時(shí)間片。當(dāng)該進(jìn)程時(shí)間片用完后,判斷該進(jìn)程是否已經(jīng)完成,若完成,則將該進(jìn)程插入到完成隊(duì)列;若沒有完成,則將該進(jìn)程的優(yōu)先級(jí)減一并重新插入到就緒隊(duì)列中
一直重復(fù)該循環(huán),一直到待插入隊(duì)列和就緒隊(duì)列都為空為止
通過上述介紹,相信大家對(duì)什么是Java進(jìn)程調(diào)度算法已經(jīng)有所了解,大家如果想了解更多相關(guān)知識(shí),不妨來關(guān)注一下本站的Java多線程編程,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),相信對(duì)大家一定會(huì)有所幫助的。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743