Advertisement
thewitchking

Untitled

May 30th, 2025
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.17 KB | None | 0 0
  1. class SharedBuffer {
  2.     private int number;
  3.     private boolean available = false;
  4.  
  5.     public synchronized void produce(int num) {
  6.         try {
  7.             while (available) {
  8.                 wait(); // Wait if consumer hasn't consumed previous number
  9.             }
  10.             number = num;
  11.             System.out.println("Produced: " + number);
  12.             available = true;
  13.             notify(); // Notify the consumer
  14.         } catch (InterruptedException e) {
  15.             Thread.currentThread().interrupt();
  16.         }
  17.     }
  18.  
  19.     public synchronized void consume() {
  20.         try {
  21.             while (!available) {
  22.                 wait(); // Wait until a number is available
  23.             }
  24.             System.out.println("Consumed: " + number);
  25.             available = false;
  26.             notify(); // Notify the producer
  27.         } catch (InterruptedException e) {
  28.             Thread.currentThread().interrupt();
  29.         }
  30.     }
  31. }
  32.  
  33. class Producer extends Thread {
  34.     private final SharedBuffer buffer;
  35.  
  36.     public Producer(SharedBuffer buffer) {
  37.         this.buffer = buffer;
  38.     }
  39.  
  40.     public void run() {
  41.         for (int i = 1; i <= 5; i++) {
  42.             buffer.produce(i);
  43.             try {
  44.                 Thread.sleep(500); // Simulate time to produce
  45.             } catch (InterruptedException e) {
  46.                 Thread.currentThread().interrupt();
  47.             }
  48.         }
  49.     }
  50. }
  51.  
  52. class Consumer extends Thread {
  53.     private final SharedBuffer buffer;
  54.  
  55.     public Consumer(SharedBuffer buffer) {
  56.         this.buffer = buffer;
  57.     }
  58.  
  59.     public void run() {
  60.         for (int i = 1; i <= 5; i++) {
  61.             buffer.consume();
  62.             try {
  63.                 Thread.sleep(500); // Simulate time to consume
  64.             } catch (InterruptedException e) {
  65.                 Thread.currentThread().interrupt();
  66.             }
  67.         }
  68.     }
  69. }
  70.  
  71. public class ProducerConsumerDemo {
  72.     public static void main(String[] args) {
  73.         SharedBuffer buffer = new SharedBuffer();
  74.         Producer producer = new Producer(buffer);
  75.         Consumer consumer = new Consumer(buffer);
  76.  
  77.         producer.start();
  78.         consumer.start();
  79.     }
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement