readyData3.removeElementAt(0);
Integer c=new Integer(0); temp3.addElement(c); Integer pic;
pic=new Integer(30);
temp3.addElement(pic); runData.clear();
runData.addElement(temp3); flag=3; }
else{
//JOptionPane.showMessageDialog(null, \就绪队列为空,运行结束!\\注意\ }
}
public void addreadyData(){ //算法模式选择 try{
if(item.equals(\静态时间片轮转法\ readyData1.clear(); for(int i=0;i readyData1.add(RR.get(i)); } // readyData1=(Vector)RR.clone(); } else if(item.equals(\动态时间片轮转法\ readyData1.clear(); for(int i=0;i } else if(item.equals(\多级反馈调度算法\ readyData1.clear(); for(int i=0;i }catch(NullPointerException m){ m.printStackTrace(); } } //--------------------------------------------------------------- public class ThreadRunning extends Thread{ //主线程操作 @SuppressWarnings(\ public void run(){ try{ while(true) { Vector if(king!=-1&&runData.isEmpty()){ Vector int idN=(Integer)check.get(0); if(idN==king){ PCB pro=new PCB(); if(allData.get(idN) instanceof PCB){ pro=(PCB)allData.get(idN); } String stT=new String(); Date startTime=new Date(); pro.inputStartTime(startTime); stT=pro.getStartTime(); check.setElementAt(stT,4); Integer c=new Integer(0); check.addElement(c); Integer pi=new Integer((Integer)check.get(3)); check.addElement(pi); RR.removeElementAt(i); operation(); addreadyData(); runData.addElement(check); king=-1; Unstop=true; } } } temp2=(Vector)runData.get(0); while(!active); sleep(980); Integer r=(Integer)temp2.get(3); Integer n=(Integer)temp2.get(5); Integer p=(Integer)temp2.get(6); if(n>=r){ //完成处理 String finishT=new String(); Integer ide=(Integer)temp2.get(0); Date finishTime=new Date(); PCB proc; proc=(PCB)allData.get(ide); proc.inputFinishTime(finishTime); finishT=proc.getFinishTime(); Double pt=new Double(proc.getPerTime()); Vector((Vector)waitData.get(0)); Integer runTime=new Integer(proc.getRunTime()); temp2.setElementAt(runTime,3); temp2.setElementAt(finishT,5); temp2.setElementAt(pt,6); finishData.addElement(temp2); if(Unstop){ if(waitData.size()!=0){ Vector wakeup=new waitData.removeElementAt(0); int idN=(Integer)wakeup.get(0); PCB pro=new PCB(); if(allData.get(idN) instanceof PCB){ pro=(PCB)allData.get(idN); } String stT=new String(); Date startTime=new Date(); pro.inputStartTime(startTime); stT=pro.getStartTime(); wakeup.setElementAt(stT,4); Integer c=new Integer(0); wakeup.addElement(c); Integer pi=new Integer((Integer)wakeup.get(3)); wakeup.addElement(pi); runData.clear(); runData.addElement(wakeup); } else{ Unstop=false; runData.clear(); addrunData(); } } else{ runData.clear(); addrunData(); } } else if(king!=-1&&!runData.isEmpty()){ temp2.setElementAt((r-n),3); temp2.removeElementAt(6); temp2.removeElementAt(5); if(flag==1){ String st=new String(); temp2.setElementAt(st,4); RR.add(temp2); } else if(flag==2){ readyData2.add(temp2); } else if(flag==3){ readyData3.add(temp2); } operation(); Vector check=new Vector(); for(int i=0;i if(idN==king){ PCB pro=new PCB(); if(allData.get(idN) instanceof PCB){ pro=(PCB)allData.get(idN); } String stT=new String(); Date startTime=new Date(); pro.inputStartTime(startTime); stT=pro.getStartTime(); check.setElementAt(stT,4); Integer c=new Integer(0); check.addElement(c); Integer pi=new Integer((Integer)check.get(3)); check.addElement(pi); RR.removeElementAt(i); operation(); addreadyData(); runData.clear(); runData.addElement(check); king=-1; Unstop=true; } } } else if(n>=p&&!(item.equals(\动态时间片轮转法\ if(item.equals(\多级反馈调度算法\ temp2.setElementAt((r-p),3); temp2.removeElementAt(6); \ temp2.removeElementAt(5); readyData2.add(temp2); addrunData(); } else if(item.equals(\多级反馈调度算 temp2.setElementAt((r-p),3); temp2.removeElementAt(6); temp2.removeElementAt(5); readyData3.add(temp2); addrunData(); } else{ temp2.setElementAt((r-p),3); String st=new String(); temp2.setElementAt(st,4); temp2.removeElementAt(6); temp2.removeElementAt(5); RR.add(temp2); operation(); addreadyData(); addrunData(); } } else if(!runData.isEmpty()){ if(item.equals(\动态时间片轮转法\ int pty=(Integer)temp2.get(1); if(readyData1.isEmpty()){ if(n%p==0&&n!=0){ if(pty>1){ pty--; p+=5; temp2.setElementAt(p,6); temp2.setElementAt(pty,1); } 法