用Java编写时间片轮转算法
时间: 2024-05-13 07:18:07 浏览: 76
Java语言时间片轮转算法
4星 · 用户满意度95%
时间片轮转算法是一种常见的 CPU 调度算法,可以用于多道程序设计中。下面是一个用 Java 编写的时间片轮转算法的示例代码:
```java
import java.util.*;
public class TimeSliceScheduler {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 输入进程数量
System.out.print("请输入进程数量:");
int n = sc.nextInt();
// 输入时间片长度
System.out.print("请输入时间片长度:");
int quantum = sc.nextInt();
// 初始化进程列表
List<Process> processes = new ArrayList<>();
for (int i = 0; i < n; i++) {
System.out.print("请输入进程" + (i + 1) + "的执行时间:");
int burstTime = sc.nextInt();
processes.add(new Process(i + 1, burstTime));
}
// 执行时间片轮转算法
int currentTime = 0;
while (!processes.isEmpty()) {
Process currentProcess = processes.get(0);
if (currentProcess.getBurstTime() > quantum) {
currentProcess.setBurstTime(currentProcess.getBurstTime() - quantum);
currentTime += quantum;
processes.remove(0);
processes.add(currentProcess);
} else {
currentTime += currentProcess.getBurstTime();
currentProcess.setTurnaroundTime(currentTime);
currentProcess.setWaitingTime(currentTime - currentProcess.getBurstTime());
processes.remove(0);
}
}
// 输出结果
System.out.println("进程\t执行时间\t等待时间\t周转时间");
for (Process process : processes) {
System.out.println(process.getId() + "\t\t" + process.getBurstTime() + "\t\t" + process.getWaitingTime() + "\t\t" + process.getTurnaroundTime());
}
}
}
class Process {
private int id;
private int burstTime;
private int waitingTime;
private int turnaroundTime;
public Process(int id, int burstTime) {
this.id = id;
this.burstTime = burstTime;
}
public int getId() {
return id;
}
public int getBurstTime() {
return burstTime;
}
public void setBurstTime(int burstTime) {
this.burstTime = burstTime;
}
public int getWaitingTime() {
return waitingTime;
}
public void setWaitingTime(int waitingTime) {
this.waitingTime = waitingTime;
}
public int getTurnaroundTime() {
return turnaroundTime;
}
public void setTurnaroundTime(int turnaroundTime) {
this.turnaroundTime = turnaroundTime;
}
}
```
这个示例代码中,我们使用了一个 `Process` 类来表示进程,其中包含进程的 ID、执行时间、等待时间和周转时间。在主函数中,我们首先输入进程数量和时间片长度,然后初始化进程列表。接着我们按照时间片轮转算法的规则执行调度过程,每次从进程列表的头部取出一个进程进行执行,如果该进程的执行时间超过了时间片长度,就将其放回进程列表的尾部,并将其剩余执行时间设为当前执行时间加上时间片长度;否则就将该进程的等待时间和周转时间计算出来,并从进程列表中移除该进程。最后输出每个进程的执行时间、等待时间和周转时间。
阅读全文