Java实现先来先服务 (FCFS) 调度算法
以下是使用Java语言编写的FCFS调度算法代码:
import java.util.ArrayList;
import java.util.List;
class Job {
String name;
int arrivalTime;
int burstTime;
int startTime;
int endTime;
Job(String name, int arrivalTime, int burstTime) {
this.name = name;
this.arrivalTime = arrivalTime;
this.burstTime = burstTime;
}
}
public class FCFS {
public static void main(String[] args) {
List<Job> jobList = new ArrayList<>();
jobList.add(new Job('Job1', 0, 10));
jobList.add(new Job('Job2', 1, 4));
jobList.add(new Job('Job3', 2, 8));
jobList.add(new Job('Job4', 3, 5));
int currentTime = 0;
double totalTurnaroundTime = 0;
System.out.println('作业后备队列中的作业:');
for (Job job : jobList) {
System.out.println(job.name);
}
System.out.println();
System.out.println('作业 开始运行时间 结束运行时间');
for (Job job : jobList) {
if (job.arrivalTime > currentTime) {
currentTime = job.arrivalTime;
}
job.startTime = currentTime;
job.endTime = currentTime + job.burstTime;
currentTime = job.endTime;
System.out.println(job.name + ' ' + job.startTime + ' ' + job.endTime);
totalTurnaroundTime += job.endTime - job.arrivalTime;
}
System.out.println();
double averageTurnaroundTime = totalTurnaroundTime / jobList.size();
System.out.println('各作业的周转时间:');
for (Job job : jobList) {
System.out.println(job.name + ': ' + (job.endTime - job.arrivalTime));
}
System.out.println();
System.out.println('平均周转时间: ' + averageTurnaroundTime);
}
}
在这个示例中,我们创建了一个Job类来表示作业,并在FCFS类中实现了FCFS调度算法。我们使用一个jobList列表来存储作业,每个作业都有一个名称、到达时间和执行时间。我们通过计算作业的开始时间和结束时间来模拟作业的调度过程,并计算总周转时间和平均周转时间。
运行上述代码,将输出作业后备队列中的作业、正运行作业的作业名、开始运行时间、结束运行时间以及各作业的周转时间和平均周转时间。
原文地址: https://www.cveoy.top/t/topic/pc6Y 著作权归作者所有。请勿转载和采集!