tell me this code is used for what and explain to me how dose this code work and what happens in each class and method import java.util.concurrent.Semaphore; class Q { // an item int item; // semCon...



tell me this code is used for what and explain to me how dose this code work and what happens in each class and method




import java.util.concurrent.Semaphore;

class Q {
// an item
int item;

// semCon initialized with 0 permits
// to ensure put() executes first
static Semaphore semCon = new Semaphore(0);

static Semaphore semProd = new Semaphore(1);

// to get an item from buffer
void get()
{
try {
// Before consumer can consume an item,
// it must acquire a permit from semCon
semCon.acquire();
}
catch (InterruptedException e) {
System.out.println("InterruptedException caught");
}

// consumer consuming an item
System.out.println("Consumer consumed item : " + item);

// After consumer consumes the item,
// it releases semProd to notify producer
semProd.release();
}

// to put an item in buffer
void put(int item)
{
try {
// Before producer can produce an item,
// it must acquire a permit from semProd
semProd.acquire();
}
catch (InterruptedException e) {
System.out.println("InterruptedException caught");
}

// producer producing an item
this.item = item;

System.out.println("Producer produced item : " + item);

// After producer produces the item,
// it releases semCon to notify consumer
semCon.release();
}
}

// Producer class
class Producer implements Runnable {
Q q;
Producer(Q q)
{
this.q = q;
new Thread(this, "Producer").start();
}

public void run()
{
for (int i = 0; i < 5;="">
// producer put items
q.put(i);
}
}

// Consumer class
class Consumer implements Runnable {
Q q;
Consumer(Q q)
{
this.q = q;
new Thread(this, "Consumer").start();
}

public void run()
{
for (int i = 0; i < 5;="">
// consumer get items
q.get();
}
}

// Driver class
class PC {
public static void main(String args[])
{
// creating buffer queue
Q q = new Q();

// starting consumer thread
new Consumer(q);

// starting producer thread
new Producer(q);
}
}


Jun 08, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here