Can someone please answer this Java question? I only need the answer for questio
ID: 3859481 • Letter: C
Question
Can someone please answer this Java question?
I only need the answer for question number 5.
thank you.
objectQueue Class // objectQueue. java public class ObjectQueue private Object t item; private int front; private int rear; private int count; public ObjectQueue) f item new Object[l]; front = 0; rear-1i count 0; public boolean isEmpty) t return count : 0; public boolean isFull) f return countitem.length; public void clear) f item new Object [1]: front 0; rear = -1 ; count 0; public void insert (Object o) if (isFull)) resize (2 item. length); (rear+1) % item . length; rear- item[rear]oi ++countiExplanation / Answer
import java.util.Vector;
import java.util.concurrent.LinkedBlockingQueue;
public class MultilevelFeedbackQueue extends SchedulingQueue {
private volatile LinkedBlockingQueue<Process> queue_RR1;
private volatile LinkedBlockingQueue<Process> queue_RR2;
private volatile LinkedBlockingQueue<Process> queue_FIFO;
private volatile Vector<LinkedBlockingQueue<Process>> _level;
public MultilevelFeedbackQueue(int count_cpu, int qty) {
super(count_cpu, qty);
queue_RR1 = new LinkedBlockingQueue<Process>();
queue_RR2 = new LinkedBlockingQueue<Process>();
queue_FIFO = new LinkedBlockingQueue<Process>();
_level = new Vector<LinkedBlockingQueue<Process>>();
_level.add(queue_FIFO);
_level.add(queue_RR2);
_level.add(queue_RR1);
is_run = true;
}
public void add_process(Process p) {
_level.elementAt(0).add(p);
}
public void remove_process(Process p) {
}
public void run() {
while(true) {
if(is_run) {
_step();
}
}
}
private void _step() {
int _quantum = this._quantum;
int already_used;
Process _proc;
for(int i = _level.size() - 1; i >= 0; i--) {
// retrieving first item
_proc = _level.get(i).peek();
// check process is not there
if(_proc == null) {
continue;
}
already_used = _quantum < _proc.get_burst_time() ? _quantum : _proc.get_burst_time();
_proc.changeBurstTime(-1 * already_used);
if(i == _level.size() - 1) {
//remove process it it is finished
if(_proc.get_burst_time() == 0) {
_level.get(_level.size() - 1).poll();
}
}
else {
_level.get(i).poll();
_level.get(i + 1).offer(_proc);
}
for(Process p : _level.get(i)) {
if(p != _proc) {
p.addWaitTime(already_used);
}
}
}
}
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.util.Vector;
public abstract class SchedulingQueue implements Runnable {
protected int _quantum;
protected volatile Vector<Process> process_queue;
private Thread[] _processors;
protected boolean is_run;
public abstract void add_process(Process p);
public abstract void remove_process(Process p);
public SchedulingQueue(int count_cpu, int qty) {
is_run = false;
_processors = new Thread[count_cpu];
for(int i = 0; i< count_cpu; i++) {
_processors[i] = new Thread(this);
_processors[i].start();
}
process_queue = new Vector<Process>();
_quantum = qty;
}
// calculate total wait time..
public int getTotalWaitTime() {
int totalWaitTime = 0;
for(Process p : process_queue) {
totalWaitTime += p.getWaitTime();
}
return totalWaitTime;
}
public int getTotalTurnaroundTime() {
int totalTurnaround = 0;
for(Process p : process_queue) {
totalTurnaround += p.getTurnaroundTime();
}
return totalTurnaround;
}
public int getProcessCount() {
return process_queue.size();
}
}