公***靜態無效的主要(字串[] args){
MyQueue的MyQueue的新MyQueue的();/ /聲明隊列
印刷電路板[PCB = {新的PCB(001 ,8,1),新的PCB(002,7,9),新的PCB(003,3,8),新的PCB(004,1,7),新的PCB(005,7,4)};
> PCB段=新的PCB();
(INT I = 0; <pcb.length; + +){/ /初始化先進行排序,選擇排序這裏使用的是高優先級的壹線隊
(J =我; <pcb.length; J + +){
(PCB [I]。特權<PCB [J]。特權){
段= PCB [1];
PCB [I] = PCB [J];
PCB [J] =段;
}
}
}
體系。通過out.println(“入隊後第壹時間的進程的順序:”);
(INT I = 0; <pcb.length; + +){
的System.out調用println(第壹次入隊#程序名稱:“+ PCB [我]。名稱+ totaltime:”+ PCB [I]。totaltime +“的”特權“+ PCB [我]。特權); }
();
myqueue.start(PCB);
}
}
類MyQueue的{
INT指數= 0;
PCB [] PC =新的PCB [5];
PCB [] PC1 =新的PCB [4];
PCB溫度=新的PCB() BR />公***無效排隊(PCB工藝){/ /排隊算法
(指數== 5){
(“出界!”);
返回
}
PC [索引] =進程;
指數+ +;
}
公***:PCB DEQUEUE(){/ /出隊算法(索引== 0)
返回空;
(INT I = 0; <pc1.length; + +){
PC1 [I] = PC [ +1];
}
指數 -
溫度= PC [0];
(INT I = 0; <pc1.length; + +){ BR /> PC [I] = PC1 [I];
}
回報條件;
}
公***無效啟動(PCB [] PC){/ /進程表算法
(PC [0]。isNotFinish ==真| | PC [1 isNotFinish ==真| | PC [2 isNotFinish ==真| | PC [3]。時isNotFinish ==真| | PC [4]。isNotFinish ==){
/ / *註:| |運算符都是假的,所有的表達式結果為假,否則真
(INT I = 0; <PC長度; + +){
PC [I]。運行(這壹點); />} 的System.out.println();
(INT I = 0; <pc.length; + +){/ /處理每個運行壹次運行的時間片的長度重新排序優先壹旦
(J =我; <pc.length; J + +){
如果(PC [I]特權<PC [J]。特權){
溫度= PC [I];
PC [I] = PC [J];
PC [J] =溫度;
}
}
}
}
}
}
類PCB {/ /聲明過程級
和int名,totaltime ,運行時特權;
布爾isNotFinish的;
公眾PCB(){
}
公開PCB(名稱,詮釋totaltime特權){
this.name =的名稱;/ /進程名
this.totaltime = totaltime ;/ /
this.privilege =特權;/ /總時間優先 this.runtime = 2 ;/ /時間片值是2
this.isNotFinish =真;/ /是否執行完成
(“初始值:程序名稱:”+名+“totaltime:”+ totaltime +“特權”+特權);
System.out的。調用println();
}
MyQueue的MQ公***無效的run(){/ /處理的基礎上實施的時間片算法
(totalTime> 1){ totaltime =運行;/ /總時間大於1,總時間=總時間 - 時間片
特權 -
(“程序名稱:”+姓名+“ remaintime:“+ +”特權“+特權); totaltime
的} else if(totaltime == 1){
totaltime - ;/ /總時間為1時,執行時間為1
>特權 -
(“程序名稱:”+姓名+“remaintime:”+ totaltime +“特權”+特權);
}其他{
isNotFinish =假;/ / 0,將isNotFinish標誌設置為假
}
如果(isNotFinish ==真){br mq.deQueue();
mq.enQueue(本);
}
}
}