【具体代码】
RR_Math.java
package RR;
import java.text.DecimalFormat;
import java.util.LinkedList;
import java.util.Scanner;
public class RR_Math {
private LinkedList<Progress> l; //调度队列
private Progress p_a; //经过抽象和封装的进程对象a
private Progress p_b; //经过抽象和封装的进程对象b
private Progress p_c; //经过抽象和封装的进程对象c
private Progress p_d; //经过抽象和封装的进程对象d
private Progress p_e; //经过抽象和封装的进程对象e
private Scanner s;
private DecimalFormat df;
private int q;
public void init(){
l = new LinkedList<>(); //分配队列内存
//s = new Scanner(System.in);
p_a = new Progress("A",0,4,4);
p_b = new Progress("B",1,3,3);
p_c = new Progress("C",2,4,4);
p_d = new Progress("D",3,2,2);
p_e = new Progress("E",4,4,4);
l.offer(p_a);
l.offer(p_b);
l.offer(p_c);
l.offer(p_d);
l.offer(p_e);
}
public void RR_Math(){
System.out.print("请输入时间片q:");
s = new Scanner(System.in);
q = s.nextInt();
df = new DecimalFormat("0.00");
Progress temp;
int count = 0;
while ((temp=l.poll()) != null){
if (temp.getService_time()-q > 0){
String Name = temp.getName();
int getTime = temp.getGet_time();
int serviceTime = temp.getService_time()-q;
int const_service = temp.getConst_service();
temp = new Progress(Name,getTime,serviceTime,const_service);
l.offer(temp);
count+=q;
}else{
if(temp.getService_time() < q)
count+=temp.getService_time();
else
count+=q;
temp.setFinish_time(count);
temp.setRevolve_time(temp.getFinish_time()-temp.getGet_time());
temp.setPriority_revolve(temp.getRevolve_time()/(double)(temp.getConst_service()));
System.out.print("线程名字:"+temp.getName()+"\t");
System.out.print("到达时间:"+temp.getGet_time()+"\t");
System.out.print("服务时间:"+temp.getConst_service()+"\t");
System.out.println("完成时间:"+temp.getFinish_time()+"\t");
System.out.println("周转时间:"+temp.getRevolve_time()+"\t");
System.out.println("带权周转时间:"+df.format(temp.getPriority_revolve())+"\t");
}
}
}
}
Progress.java
package RR;
public class Progress {
private String name;//线程名字
private int get_time;//到达时间
private int service_time;//服务时间
private int finish_time;//完成时间
private int revolve_time;//周转时间
private double priority_revolve;//带权周转时间
private int const_service;//固定不变的服务时间
public Progress(String name, int get_time, int service_time, int finish_time, int revolve_time) {
super();
this.name = name;
this.get_time = get_time;
this.service_time = service_time;
this.finish_time = finish_time;
this.revolve_time = revolve_time;
}
public Progress(String name, int get_time, int service_time, int const_service) {
super();
this.name = name;
this.get_time = get_time;
this.service_time = service_time;
this.const_service = const_service;
}
public Progress(String name, int get_time, int service_time) {
super();
this.name = name;
this.get_time = get_time;
this.service_time = service_time;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGet_time() {
return get_time;
}
public void setGet_time(int get_time) {
this.get_time = get_time;
}
public int getService_time() {
return service_time;
}
public void setService_time(int service_time) {
this.service_time = service_time;
}
public int getFinish_time() {
return finish_time;
}
public void setFinish_time(int finish_time) {
this.finish_time = finish_time;
}
public int getRevolve_time() {
return revolve_time;
}
public void setRevolve_time(int revolve_time) {
this.revolve_time = revolve_time;
}
public double getPriority_revolve() {
return priority_revolve;
}
public void setPriority_revolve(double priority_revolve) {
this.priority_revolve = priority_revolve;
}
public int getConst_service() {
return const_service;
}
public void setConst_service(int const_service) {
this.const_service = const_service;
}
}
Main.java
package RR;
public class Main {
public static void main(String[] args) {
RR_Math main = new RR_Math();
main.init();
main.RR_Math();
}
}
更多推荐
操作系统 进程调度之轮换调度(RR调度)
发布评论