Question: modify the code: import java.util.PriorityQueue; import java.util.Queue; import java.util.Random; import java.util.concurrent.Semaphore; public class hw 3 _ Soto { static class Process { String processID; int
modify the code:
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.Semaphore;
public class hwSoto
static class Process
String processID;
int priority;
int timeLeft;
public ProcessString processID, int priority, int timeLeft
this.processID processID;
this.priority priority;
this.timeLeft timeLeft;
@Override
public String toString
return processID : priority;
public int getTimeLeft
return this.timeLeft;
public static void mainString args
Random rand new Random;
Semaphore semaphore new Semaphore;
PriorityQueue priorityQueue new PriorityQueuep p ppriority ppriority;
Queue blockingQueue new PriorityQueuep p ppriority ppriority;
Generate processes and add them to the longterm queue
for int i ; i ; i
String processID P i;
int priority rand.nextInt;
int timeLeft priority ; Adjust time unit if necessary
priorityQueue.addnew ProcessprocessID priority, timeLeft;
int stepCounter ;
while priorityQueue.isEmptyblockingQueue.isEmpty
try
semaphore.acquire; Acquire semaphore to start processing
Process nextProcess null;
System.out.printlnStep: stepCounter;
stepCounter;
printPriorityQueuepriorityQueue;
printBlockedQueueblockingQueue;
if priorityQueue.isEmpty && blockingQueue.size adding processes to the blocking queue
nextProcess priorityQueue.poll;
System.out.printlnDispatching from priority queue: nextProcess;
for int i ; i && priorityQueue.isEmpty; i
Process processToAdd priorityQueue.poll;
blockingQueue.addprocessToAdd;
else if blockingQueue.isEmpty dispatch processes from the blocking queue to the processor
nextProcess blockingQueue.poll;
System.out.printlnDispatching from blocking queue: nextProcess;
if nextProcess null
processsemaphore nextProcess, blockingQueue;
else
semaphore.release; Release semaphore if no process to execute
catch InterruptedException e
eprintStackTrace;
private static void processSemaphore semaphore, Process process, Queue blockingQueue simulates executing in the processor
new Thread
try
System.out.printlnRunning process: process.toString;
Thread.sleepprocessgetTimeLeft;
System.out.printlnProcess completed: process.toString;
System.out.println;
catch InterruptedException e
eprintStackTrace;
finally
semaphore.release; Release semaphore once processing is done
start;
public static void printPriorityQueuePriorityQueue queue prints the priority queue
System.out.printThe processes in the Priority queue are: ;
for Process p : queue
System.out.printptoString;
System.out.println;
public static void printBlockedQueueQueue queue prints blocked queue
System.out.printThe processes in the blocked queue are: ;
for Process p : queue
System.out.printptoString;
System.out.println;
to where only five processes at most can be in the blocked queue
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
