Java program that implements producer consumer problem. It is an example for multi process synchronization, where producer always produces and consumer always consumes.The consumer consumes only after the producer produces.
class Thread1 { int num; boolean vs=false; synchronized int get() { if (!vs) try { wait(); } catch (Exception e) { System.out.println("Excepton occurs at : "+e); } System.out.println("get" +num); try { Thread.sleep(1000); } catch (Exception e) { System.out.println("Excepton occurs at : "+e); } vs=false; notify(); return num; } synchronized int put(int num) { if (vs) try { wait(); } catch (Exception e) { System.out.println("Excepton occur at : "+e); } this.num=num; vs=true; System.out.println("put"+num); try { Thread.sleep(1000); } catch (Exception e) { System.out.println("Excepton occur at : "+e); } notify(); return num; } } class Producer implements Runnable { Thread1 t; Producer(Thread1 t) { this.t=t; new Thread(this,"Producer").start(); } public void run() { int x=0; int i = 0; while (x<10) { t.put(i++); x++; } } } class Consumer implements Runnable { Thread1 t; Consumer(Thread1 t) { this.t=t; new Thread(this,"Consumer").start(); } public void run() { int x=0; while (x<10) { t.get(); x++; } } } class ProducerConsumer { public static void main(String[] args) { Thread1 t=new Thread1(); new Producer(t); new Consumer(t); } }
OUTPUT:
put0 get0 put1 get1 put2 get2 put3 get3 put4 get4 put5 get5 put6 get6 put7 get7 put8 get8 put9 get9
Output with Delay: