java模拟系统进程算法的小程序
来源:互联网 发布:购车指南 知乎 编辑:程序博客网 时间:2024/05/18 02:48
package PID;
public class ProBean {
private String PID;
private int time;
private int priority;
public String getPID() {
return PID;
}
public void setPID(String pid) {
PID = pid;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
}
package PID;
import java.util.ArrayList;
import java.util.List;
public class ProList {
List<ProBean> list=new ArrayList<ProBean>();
public boolean isE(String pid){
for(int i=0;i<list.size();i++){
if(pid.equals(list.get(i).getPID())){
return true;
}
}
return false;
}
}
package PID;
import java.util.List;
import java.util.Scanner;
public class ProTest {
private static Scanner input=new Scanner(System.in);
private static ProList pl=new ProList();
//private static ProBean pb=new ProBean();new only one global object
public static void main(String[]args){
NewPro();
}
public static void NewPro(){
System.out.println("请输入进程数:");
int pnum=input.nextInt();
for(int i=0;i<pnum;i++){
System.out.println("请输入该进程的PID:");
String pid=input.next();
boolean isExist=pl.isE(pid);
if(!isExist){
System.out.println("请输入该进程的运行时间(秒):");
int time=input.nextInt();
System.out.println("请输入该进程的优先数:");
int priority=input.nextInt();
ProBean pb=new ProBean();
pb.setPID(pid);
pb.setTime(time);
pb.setPriority(priority);
List<ProBean> pl1=pl.list;
pl1.add(pb);
}else{
System.out.println("该PID的进程已经存在!");
}
}
System.out.println("------------------------");
System.out.println("请选择算法:");
System.out.println("------------------------");
System.out.println("1.先进先服务算法");
System.out.println("2.优先级算法");
int num1=input.nextInt();
switch(num1){
case 1:
List<ProBean> list=pl.list;
for(int j=0;j<list.size();j++){
ProBean pb=list.get(j);
String pname=pb.getPID();
MyThread t=new MyThread(pname);
t.start();
try {
t.sleep(pb.getTime()*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(pb.getTime()+"秒后结束..."+"/t");
t.stop();
if(!t.isAlive()){
System.out.println("进程结束");
}
}
/* List<ProBean> list=pl.list;
ProBean pb1=list.get(0);
String pt1=pb1.getPID();
MyThread t1 = new MyThread(pt1);
t1.start();
System.out.println();
try {
t1.sleep(pb1.getTime()*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(pb1.getTime()+"秒后结束..."+"/t");
t1.stop();
System.out.println("进程结束");*/
/*
ProBean pb2=list.get(1);
String pt2=pb2.getPID();
MyThread t2 = new MyThread(pt2);
t2.start();
try {
t2.sleep(pb2.getTime()*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
break;
case 2:
int temp=0;
int time=0;
List<ProBean> list2=pl.list;
for(int i=0;i<list2.size()-1;i++){
for(int j=0;j<list2.size()-i-1;j++){
if(list2.get(j).getPriority()<list2.get(j+1).getPriority()){
temp=list2.get(j+1).getPriority();
String ptemp=list2.get(j+1).getPID();
time=list2.get(j+1).getTime();
list2.get(j+1).setPriority(list2.get(j).getPriority());
list2.get(j).setPriority(temp);
list2.get(j+1).setPID(list2.get(j).getPID());
list2.get(j).setPID(ptemp);
list2.get(j+1).setTime(list2.get(j).getTime());
list2.get(j).setTime(time);
}
}
}
for(int i=0;i<list2.size();i++){
//int pri=list2.get(i).getPriority();
ProBean pb=list2.get(i);
String pname=pb.getPID();
MyThread t=new MyThread(pname);
t.start();
try {
t.sleep(pb.getTime()*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(pb.getTime()+"秒后结束..."+"/t");
t.stop();
if(!t.isAlive()){
System.out.println("进程结束");
}
}
break;
}
}
static class MyThread extends Thread{
boolean RUN=true;
MyThread(String s){
super(s);
}
public void run(){
System.out.print("PID:"+getName()+"/t"+"正在运行...");
}
}
}
- java模拟系统进程算法的小程序
- 对3种进程调度算法进行模拟的小程序
- java 模拟系统连接程序
- 一个用java模拟ATM操作的小程序
- Java小程序:模拟ATM取款
- Java小程序:模拟双色球开奖
- Java模拟玩家洗牌发牌小程序
- 基于Linux的进程调度模拟程序
- 单处理器进程调度算法的模拟
- FCFS,高优先权算法进程调度程序模拟
- 一个模拟音频条的小程序
- android模拟打电话的应用小程序
- 一个模拟斗地主的小程序
- 进程调度模拟程序
- 进程控制模拟程序
- java的小程序!
- Java的小程序
- 进程调度模拟算法
- 算法:最长升序降序序列(最长升序序列)
- 笔记.消息队列查看使用情况和修改
- Ailurus 小熊猫
- 学生为什么要离开工作室?
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- java模拟系统进程算法的小程序
- struts2执行流程(zz)
- PageMethods方法的一点研究
- 声明和定义
- IIS log参数详解(攻防日志)
- Openfetion 介绍
- asp.net mvc 灰常强大的分页控件---MvcPager
- Flash Builder 4破解,以及序列号防止过期!
- 算法:最长升序降序序列(最长降序序列)