File tree 1 file changed +15
-6
lines changed
src/main/java/com/thealgorithms/scheduling 1 file changed +15
-6
lines changed Original file line number Diff line number Diff line change @@ -24,13 +24,12 @@ public void scheduleProcesses() {
24
24
PriorityQueue <ProcessDetails > readyQueue = new PriorityQueue <>(Comparator .comparingInt (ProcessDetails ::getPriority ).reversed ().thenComparingInt (ProcessDetails ::getArrivalTime ));
25
25
26
26
int currentTime = 0 ;
27
- int processIndex = 0 ;
27
+ List < ProcessDetails > arrivedProcesses = new ArrayList <>() ;
28
28
29
- while (processIndex < processes .size () || !readyQueue .isEmpty ()) {
30
- while (processIndex < processes .size () && processes .get (processIndex ).getArrivalTime () <= currentTime ) {
31
- readyQueue .add (processes .get (processIndex ));
32
- processIndex ++;
33
- }
29
+ while (!processes .isEmpty () || !readyQueue .isEmpty ()) {
30
+ updateArrivedProcesses (currentTime , arrivedProcesses );
31
+ readyQueue .addAll (arrivedProcesses );
32
+ arrivedProcesses .clear ();
34
33
35
34
if (!readyQueue .isEmpty ()) {
36
35
ProcessDetails currentProcess = readyQueue .poll ();
@@ -47,4 +46,14 @@ public void scheduleProcesses() {
47
46
currentTime ++;
48
47
}
49
48
}
49
+
50
+ private void updateArrivedProcesses (int currentTime , List <ProcessDetails > arrivedProcesses ) {
51
+ processes .removeIf (process -> {
52
+ if (process .getArrivalTime () <= currentTime ) {
53
+ arrivedProcesses .add (process );
54
+ return true ;
55
+ }
56
+ return false ;
57
+ });
58
+ }
50
59
}
You can’t perform that action at this time.
0 commit comments