算法原理
一些进程先后到达,到达有被加入等待队列,每次从等待队列中挑出一个优先级最高的进程执行一个时间片,执行完后该进程剩余执行时间-1、优先级-2,回到等待队列,再从等待队列中挑出一个优先级最高的进程执行一个时间片······ 直到所有进程被执行完。
进程参数:进程名、到达时间、服务时间、优先级
进程状态:未到达、执行、等待、执行完
进程行为(每个时间片):到达等待队列、执行一个时间片、执行完回到等待队列、执行完被销毁(服务时间为0)
算法演示
import java.util.Scanner;
import java.util.Arrays;
import java.math.*;
public class Main {
static class Process implements Comparable<Process>{
String name; //进程标示
int arrivetime; //到达时间
int servicetime; //服务时间
int servicetime2; //服务时间副本
int finishtime; //完成时间
int turnovertime; //周转时间
int priority; //优先级
public Process(String name, int arrivetime, int servicetime, int priority){
//构造方法
//参数:进程名、到达时间、服务时间、优先级
this.name = name;
this.arrivetime = arrivetime;
this.s