-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScheduler.java
43 lines (33 loc) · 1.23 KB
/
Scheduler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.util.ArrayList;
import java.util.TreeMap;
public abstract class Scheduler {
protected ArrayList<Task> readyTasks = new ArrayList<Task>();
protected ArrayList<Task> finishedTasks = new ArrayList<Task>();
protected Task activeTask;
protected static int elapsedTime = 0;
public int getReadyTaskCount() {
return readyTasks.size();
}
public String getActiveTaskName() {
return activeTask.getName();
}
public abstract void addNewTask(Task t);
public abstract Task getNextTask();
protected abstract void switchToNextTask();
public abstract void run();
public abstract boolean isResourceNeeded();
protected int getWaitTime(Task t) {
return elapsedTime - t.getStartNumber() - t.getTotalBurstTime();
}
public TreeMap<String, Integer> getWaitTimes() {
TreeMap<String, Integer> waitTimes = new TreeMap<String, Integer>();
for (Task t : finishedTasks) {
String taskName = t.getName();
if (!waitTimes.containsKey(taskName)) {
int waitTime = t.getWaitTime();
waitTimes.put(taskName, waitTime);
}
}
return waitTimes;
}
}