进程调度算法java实现
时间: 2023-11-18 20:59:14 浏览: 98
在Java中实现进程调度算法,需要先定义一个 Process 类,表示一个进程,包含进程的 PID、优先级、需要执行的时间等属性。然后,可以根据具体的调度算法,实现不同的调度方法。
以下是一个简单的先来先服务(FCFS)调度算法的实现:
```java
import java.util.*;
class Process {
int pid;
int priority;
int arrivalTime;
int burstTime;
int waitingTime;
int turnaroundTime;
public Process(int pid, int priority, int arrivalTime, int burstTime) {
this.pid = pid;
this.priority = priority;
this.arrivalTime = arrivalTime;
this.burstTime = burstTime;
}
}
public class Scheduler {
public static void main(String[] args) {
List<Process> processes = new ArrayList<>();
// 添加进程
processes.add(new Process(1, 2, 0, 5));
processes.add(new Process(2, 1, 2, 3));
processes.add(new Process(3, 3, 4, 1));
processes.add(new Process(4, 4, 5, 2));
int currentTime = 0;
for (Process p : processes) {
p.waitingTime = currentTime - p.arrivalTime;
currentTime += p.burstTime;
p.turnaroundTime = currentTime - p.arrivalTime;
}
// 输出结果
System.out.println("PID\tPriority\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time");
for (Process p : processes) {
System.out.println(p.pid + "\t" + p.priority + "\t\t" + p.arrivalTime + "\t\t" + p.burstTime + "\t\t" + p.waitingTime + "\t\t" + p.turnaroundTime);
}
}
}
```
在上面的代码中,先定义了一个 Process 类,表示一个进程,包含进程的 PID、优先级、到达时间、需要执行时间、等待时间和周转时间等属性。然后,创建了一个包含多个进程的 List 对象,表示调度队列。
接着,使用一个 for 循环对每个进程进行调度,按照 FCFS 调度算法的规则,先到达的进程先执行。在执行进程之前,计算该进程的等待时间和周转时间,并更新当前时间。
最后,输出每个进程的信息,包括 PID、优先级、到达时间、需要执行时间、等待时间和周转时间。
阅读全文