模拟进程调度(简单实现)
来源:互联网 发布:什么是爱 知乎 编辑:程序博客网 时间:2024/05/16 01:15
//进程数据成员
public class Process {
public String Name;
public String Link;
public int Time;
public int Priority;
public String State;
public Process(String Name,String Link,int Time,int Priority,String State){
this.Name = Name;//进程名称
this.Link = Link;//下一个指针
this.Time = Time;//要求运行时间
this.Priority = Priority;//优先级
this.State = State;//进程状态
}
}
//Collections.sort();的参数(灰常重要)
import java.util.*;
public class Mycomparator implements Comparator{
public int compare(Object arg0, Object arg1) {
Process p1=(Process)arg0;
Process p2=(Process)arg1;
if(p1.Priority!=p2.Priority&&(p1.Time!=0&&p2.Time!=0)){//当运行时间不为0时
if(p1.Priority<p2.Priority)
return 1;
else{
return 0;
}
}
else{
if(p1.Time<p2.Time)//优先级相同,比较运行时间
return 1;
else
return 0;
}
}
}
//main函数
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Test {
@SuppressWarnings("unchecked")
public static void main(String args[]){
Process K1 = new Process("p1","0",2,1,"READY");
Process K2 = new Process("p2","K4",3,5,"READY");
Process K3 = new Process("p3","K5",1,3,"READY");
Process K4 = new Process("p4","K3",2,4,"READY");
Process K5 = new Process("p5","K1",4,2,"READY");
Process[] Prolist = {K1,K2,K3,K4,K5};
ArrayList<Process> list = new ArrayList<Process>(5);
int index = 0;
for(int i=0; i<Prolist.length; i++){
list.add(Prolist[i]);
}
Comparator<Process> comp = new Mycomparator();//根据优先级以及所需时间长短排序
System.out.println("进程名 "+"运行时间 "+"优先级 "+"状态 ");
while(true){
Collections.sort(list, comp);
Process pro = list.get(0);
if(pro.Time==0){
Collections.sort(list,comp);
}
else{
pro.State = "RUN";
if(pro.Priority!=0&&pro.Time!=0){
pro.Priority--;
}else{
}
pro.Time--;
if (pro.Time == 0) {
pro.State = "FINISH";
}
System.out.println(pro.Name + " " + pro.Time
+ " " + pro.Priority + " " + pro.State);
if (pro.State.equals("FINISH"))
index++;
if(index == list.size())
break;
}
}
}
}
- 模拟进程调度(简单实现)
- 操作系统进程调度简单模拟
- 模拟简单进程调度实验
- 进程调度模拟程序设计-----FCFS算法简单实现
- [模拟] 简单的进程调度模拟
- CPU进程调度简单模拟(PriorityFirst)--Java
- c++ 模拟进程调度 (链表实现)
- 进程调度---c模拟程序实现
- 使用java实现模拟进程调度
- 进程调度-时间片轮转法(Java简单实现)
- 进程调度-优先级算法(Java简单实现)
- 模拟进程调度(delphi写的)
- 进程调度模拟(C语言)
- 进程调度模拟程序
- 进程调度模拟
- 模拟进程调度
- 进程调度模拟
- 进程调度模拟算法
- SQL 2005 的存储过程和触发器调试大法
- MySQL order by id 也会有不走索引
- C++深度探索系列:智能指针(Smart Pointer) [一]
- order by 不走索引的思考
- QT for symbian 字符串的自动换行
- 模拟进程调度(简单实现)
- WindowBuilder Pro 免费了
- yourkit入门
- 认为
- boost::share_ptr智能指针使用示例
- 【开源项目研究】UMLet------配置文件操作
- 隐藏进程,不被任务管理器发现
- Boost智能指针——weak_ptr
- url