基于java移动臂调度算法的模拟实现的代码
时间: 2024-03-18 17:39:49 浏览: 14
以下是一个简单的基于Java移动臂调度算法的模拟实现代码示例:
```java
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class MobileArmScheduler {
static int currentTime = 0;
static int currentPos = 0;
static int armSpeed = 1;
static int armMaxPos = 100;
static int armMinPos = 0;
static Queue<Task> waitingQueue = new LinkedList<>();
static Queue<Task> executingQueue = new LinkedList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the number of tasks: ");
int taskNum = scanner.nextInt();
System.out.println("Please enter the simulation time: ");
int totalTime = scanner.nextInt();
for (int i = 1; i <= taskNum; i++) {
System.out.println("Please enter the arrival time, execution time, and priority of task " + i + " (separated by spaces): ");
int arrivalTime = scanner.nextInt();
int executionTime = scanner.nextInt();
int priority = scanner.nextInt();
waitingQueue.add(new Task(i, arrivalTime, executionTime, priority));
}
System.out.println("\nSimulation result: ");
while (currentTime <= totalTime) {
if (!waitingQueue.isEmpty()) {
Task task = waitingQueue.peek();
if (task.arrivalTime <= currentTime) {
executingQueue.add(waitingQueue.poll());
}
}
if (!executingQueue.isEmpty()) {
Task task = executingQueue.peek();
int taskPos = task.taskId;
if (currentPos < taskPos) {
currentPos += armSpeed;
} else if (currentPos > taskPos) {
currentPos -= armSpeed;
}
if (currentPos == taskPos) {
task.executionTime--;
if (task.executionTime == 0) {
executingQueue.poll();
System.out.println("Task " + task.taskId + " finished at time " + currentTime);
}
}
} else {
System.out.println("Idle at time " + currentTime);
}
currentTime++;
if (currentPos == armMaxPos) {
armSpeed = -1;
} else if (currentPos == armMinPos) {
armSpeed = 1;
}
}
}
static class Task {
int taskId;
int arrivalTime;
int executionTime;
int priority;
public Task(int taskId, int arrivalTime, int executionTime, int priority) {
this.taskId = taskId;
this.arrivalTime = arrivalTime;
this.executionTime = executionTime;
this.priority = priority;
}
}
}
```
该示例代码实现了一个简单的移动臂调度模拟器,可以根据输入的任务信息进行模拟,以评估不同算法的性能和效果。