//process类
import java.util.Date;
public class process {
private int ID_name; //进程ID名
private int PRIORITY; //优先数
private int CPUTIME; //进程已进行时间
private int ALLTIME; //进程还需要的时间
private String STATE; //进程状态
//设置 process类的构造方法
process(int i, int PRIORITY , int CPUTIME , int ALLTIME , String STATE){
this.ID_name = i;
this.PRIORITY = PRIORITY;
this.CPUTIME = CPUTIME;
this.ALLTIME = ALLTIME;
this.STATE = STATE;
}
public int getID_Name()
{
return ID_name;
}
public int getPRIORITY()
{
return PRIORITY;
}
public int getCPUTIME()
{
return CPUTIME;
}
public int getALLTIME()
{
return ALLTIME;
}
public String getSTATE()
{
return STATE;
}
public int setPRIORITY(int i)
{
return PRIORITY-=i;
}
public int setCPUTIME(int i)
{
return CPUTIME+=i;
}
public int setALLTIME(int i)
{
return ALLTIME-=i;
}
}
//process_Arraylist类
package ArrayList;
import java.util.ArrayList;
public class processArrayList {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<process> process_list = new ArrayList<>(); //创建数组列表存放进程对象
// 将创建的对象加入数组列表中
process_list.add( new process(0, 9, 0, 3, "ready" ));
process_list.add( new process(1, 38, 0, 3, "ready" ));
process_list.add( new process(2, 30, 0, 6, "ready" ));
process_list.add( new process(3, 29, 0, 3, "ready" ));
process_list.add( new process(4, 0, 0, 4, "ready" ));
System.out.println("ID_name PRIORITY CPUTIME ALLTIME STATE ");
for (process p : process_list)
System.out.printf(" %d %d %d %d %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
while(process_list.size() > 0) {
int id = getID( process_list) ;
process p = process_list.get(id);
if(p.getALLTIME() == 0) {
System.out.println("运行完成的进程:");
System.out.printf(" %d %d %d %d %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
process_list.remove(id);
}
else {
System.out.println("正在运行的进程:");
System.out.printf(" %d %d %d %d %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
p.setPRIORITY(3); //优先级减3
p.setCPUTIME(1); //运行时长加1
p.setALLTIME(1); // 还需时长减1
System.out.println("当前进程运行完的结果:");
System.out.printf(" %d %d %d %d %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
}
}
}
public static int getID( ArrayList<process> process_list){
int size = process_list.size();
int id = 0;
int p = process_list.get(0).getPRIORITY();
for(int i=1; i<size ; i++){
if( process_list.get(i).getPRIORITY() >p ){
p = process_list.get(i).getPRIORITY();
id = i;
}
}
return id;
}
}
}