ell 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,

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

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; i++)
// 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; i++)
// 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);
}
}

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Developing computer interface
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education