时间片轮转法用java语言编写
时间: 2023-07-20 07:10:16 浏览: 96
操作系统课程设计-时间片轮转算法java实现.doc
好的,下面是一个简单的时间片轮转法的 Java 代码示例:
```java
import java.util.LinkedList;
import java.util.Queue;
public class TimeSliceRoundRobin {
public static void main(String[] args) {
// 进程列表
Queue<Process> processQueue = new LinkedList<>();
processQueue.offer(new Process("P1", 0, 4));
processQueue.offer(new Process("P2", 1, 3));
processQueue.offer(new Process("P3", 2, 2));
processQueue.offer(new Process("P4", 3, 1));
// 时间片长度
int timeSlice = 1;
// 运行时间
int time = 0;
// 循环运行进程
while (!processQueue.isEmpty()) {
Process currentProcess = processQueue.poll();
System.out.println("Time " + time + ": " + currentProcess.name + " is running");
// 运行进程
currentProcess.run(timeSlice);
// 更新时间
time += timeSlice;
// 如果进程未完成,则加入队列尾部
if (currentProcess.remainingTime > 0) {
processQueue.offer(currentProcess);
}
}
}
// 进程类
static class Process {
String name; // 进程名称
int arrivalTime; // 到达时间
int remainingTime; // 剩余运行时间
public Process(String name, int arrivalTime, int remainingTime) {
this.name = name;
this.arrivalTime = arrivalTime;
this.remainingTime = remainingTime;
}
// 运行进程
public void run(int timeSlice) {
remainingTime -= timeSlice;
}
}
}
```
在这个示例中,我们定义了一个进程队列,包含了四个进程,每个进程都有到达时间和剩余运行时间。我们设置了一个时间片长度为1,然后在一个循环中运行进程,每次运行一个时间片。如果进程未完成,则将其加入队列尾部,直到所有进程都完成为止。
阅读全文