String st=new String();
int lastT=(Integer)temp1.get(4); if(lastT==0){
Date startTime=new Date(); pro.inputStartTime(startTime);
st=pro.getStartTime(); }
else{
st=pro.getStartTime(); }
// pro.inputStartTime(startTime); // st=pro.getStartTime();
temp1.insertElementAt(st,4);
runData.clear(); runData.addElement(temp1); }
else{
// JOptionPane.showMessageDialog(null, \就绪队列为空,运行结束!\\注意\ } }
public void addreadyData(){ try{
if(item.equals(\先来先服务算法\ readyData.clear();
for(int i=0;i readyData.add(FCFS.get(i)); } } else if(item.equals(\静态优先级调度算法\ readyData.clear(); for(int i=0;i } } else if(item.equals(\动态优先级调度算法\ readyData.clear(); for(int i=0;i } else if(item.equals(\最短作业优先算法\ readyData.clear(); for(int i=0;i readyData.add(SJF.get(i)); } } else if(item.equals(\最短剩余时间优先算法\ readyData.clear(); for(int i=0;i }catch(NullPointerException m){ System.out.println(\ } } //------------------------------------------------------------------- public class ThreadRunning extends Thread{ //主线程操作 @SuppressWarnings(\ public void run(){ try{ while(true) { Vector temp2=(Vector)runData.get(0); while(!active); //暂停处理 sleep(900); Integer r=(Integer)temp2.get(3); Integer n=(Integer)temp2.get(5); if(n>=r){ String ft=new String(); Integer ide=(Integer)temp2.get(0); Date finishTime=new Date(); PCB proc; proc=(PCB)allData.get(ide); proc.inputFinishTime(finishTime); ft=proc.getFinishTime(); Double pt=new Double(proc.getPerTime()); temp2.setElementAt(ft,5); temp2.addElement(pt); finishData.addElement(temp2); runData.clear(); addrunData(); } else if(stop){ //阻塞处理 waitData.add(temp2); runData.clear(); addrunData(); stop=false; } else{ if(item.equals(\最短剩余时间优先算法\ if(readyData.isEmpty()){ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } else{ Vector rd=new Vector(); rd=(Vector)readyData.get(0); int sx=(Integer)rd.get(3)-(Integer)rd.get(4); if(sx<(r-n)){ temp2.removeElementAt(4); FCFS.add(temp2); operation(); addrunData(); } else{ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } } } else if(item.equals(\静态优先级调度算法\ if(readyData.isEmpty()){ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } else{ Vector rd=new Vector(); rd=(Vector)readyData.get(0); int py=(Integer)rd.get(1); int pty=(Integer)temp2.get(1); if(pty temp2.removeElementAt(4); FCFS.add(temp2); operation(); addrunData(); } else{ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } } } else if(item.equals(\动态优先级调度算法\ int pty=(Integer)temp2.get(1); if(readyData.isEmpty()){ if(n==0&&n!=0){ if(pty>1){ pty--; temp2.setElementAt(pty,1); } } n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } else{ if(n==0&&n!=0){ if(pty>1){ pty--; temp2.setElementAt(pty,1); } Vector tempx=new Vector(); for(int i=0;i tempx.setElementAt(pp,1); FCFS.setElementAt(tempx,i); } } operation(); } else{}; Vector rd=new Vector(); rd=(Vector)readyData.get(0); pty=(Integer)temp2.get(1); int py=(Integer)rd.get(1); if(pty temp2.setElementAt(n,5); temp2.removeElementAt(4); FCFS.add(temp2); operation(); addrunData(); } else{ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } } } else{ n++; temp2.setElementAt(n,5); runData.clear(); runData.add(temp2); } } } }catch(InterruptedException e) { e.printStackTrace(); } } } //--------------------------------------------------------------------------------------------------------- public class Looking extends Thread{ //监视程序 public void run(){ try{ while(true) { addreadyData(); //时刻监视就绪队列动静