欢迎指正,虚心接受各种意见!
2.设计一个按时间片轮转法实现处理器调度的程序。
import java.util.*; public class Main { public static void main(String[] args) { method me=new method(); me.input(); me.run(); System.out.println("............................"); } } class pcb{ String name; String status; int alltime; int runtime; String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public int getAlltime() { return alltime; } public void setAlltime(int alltime) { this.alltime = alltime; } public int getRuntime() { return runtime; } public void setRuntime(int runtime) { this.runtime = runtime; } } class method{ LinkedList <pcb> al=new LinkedList<pcb>(); public void input(){ Scanner in=new Scanner(System.in); for(int i=0;i<2;i++){ System.out.println("请输入PCB["+(i+1)+"] name alltime runtime"); pcb p=new pcb(); p.setName(in.next()); p.setAlltime(Integer.parseInt(in.next())); p.setRuntime(Integer.parseInt(in.next())); p.setStatus("ready"); al.add(p); } } public void show(){ Iterator <pcb> it=al.iterator(); while(it.hasNext()){ pcb p=it.next(); System.out.println(" "+p.getName()+" "+p.getAlltime()+" "+p.getRuntime()+" "+p.getStatus()); } System.out.println(); } public void run(){ System.out.println(); System.out.println("开始运行:"); int flag=1; /*利用LinkedList可以在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法的特性。 * 每次都将LinkedList中的首元素移除并赋给一个中转站(自己创造的名词),然后将中转站添加到LinkedList的结尾处,来实现元素的轮转。 */ while(flag<=2){ al.getFirst().runtime++; if(al.getFirst().runtime==al.getFirst().getAlltime()){ al.getFirst().setStatus("finished"); show(); al.remove(); flag++; } else{ System.out.println(al.getFirst().getName()+"正在运行:"); al.getFirst().setStatus("working"); show(); al.getFirst().setStatus("ready"); pcb p=al.remove(); al.addLast(p); } } } }