Tuesday, 7 July 2015

Thread: Producer -Consumer Problem ?

package com.JavaInterview.Programs;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;


/**
 *
Producer Consumer Problem
 * 
 * @author:http://javainterviewprograms.blogspot.in/
 * 
 */



public class ProducerConsumer {

 public static void main(String args[]) {
  BlockingQueue sharedQueue = new LinkedBlockingQueue();

  Thread pd = new Thread(new Producer(sharedQueue));
  Thread cs = new Thread(new Consumer(sharedQueue));

  pd.start();
  cs.start();
 }

}

class Producer implements Runnable {

 private final BlockingQueue sharedQueue;

 Producer(BlockingQueue sharedQueue) {
  this.sharedQueue = sharedQueue;
 }

 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {
   try {
    System.out.println("Produced" + i);
    sharedQueue.put(i);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }
}

class Consumer implements Runnable {

 private final BlockingQueue sharedQueue;

 Consumer(BlockingQueue sharedQueue) {
  this.sharedQueue = sharedQueue;
 }

 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {
   try {
    System.out.println("Consumed" + sharedQueue.take());
    sharedQueue.put(i);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }
}

Output :

Produced0
Produced1
Consumed0
Produced2
Consumed1
Produced3
Consumed0
Consumed2
Produced4
Consumed1
Produced5
Consumed3
Produced6
Consumed2
Produced7
Consumed3
Produced8
Consumed4
Produced9
Consumed4


No comments:

Post a Comment

Difference between final, finally and finalize()?

final :Final is a keyword. Final is used to apply restrictions on class, method and variable. Final class can't be inherited, final ...