class ProducerConsumerDemo
{
public static void main(String[] args)
{
Product product = new Product();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
}
}
class Product
{
private int count;
private boolean flag;
public synchronized void create()
{
while(this.flag)
{
try
{
this.wait();
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
this.count++;
System.out.println(Thread.currentThread().getName()+" create -- :"+this.count);
this.flag = true;
this.notifyAll();
try
{
Thread.sleep(300);
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
public synchronized void get()
{
while(!this.flag)
{
try
{
this.wait();
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
System.out.println(Thread.currentThread().getName()+" sale:"+this.count);
this.flag = false;
this.notifyAll();
try
{
Thread.sleep(600);
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
}
class Producer implements Runnable
{
private Product product;
public Producer(Product product)
{
this.product = product;
}
public void run()
{
while(true)
{
product.create();
}
}
}
class Consumer implements Runnable
{
private Product product;
public Consumer(Product product)
{
this.product = product;
}
public void run()
{
while(true)
{
product.get();
}
}
}
{
public static void main(String[] args)
{
Product product = new Product();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
new Thread(new Producer(product)).start();
new Thread(new Consumer(product)).start();
}
}
class Product
{
private int count;
private boolean flag;
public synchronized void create()
{
while(this.flag)
{
try
{
this.wait();
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
this.count++;
System.out.println(Thread.currentThread().getName()+" create -- :"+this.count);
this.flag = true;
this.notifyAll();
try
{
Thread.sleep(300);
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
public synchronized void get()
{
while(!this.flag)
{
try
{
this.wait();
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
System.out.println(Thread.currentThread().getName()+" sale:"+this.count);
this.flag = false;
this.notifyAll();
try
{
Thread.sleep(600);
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
}
class Producer implements Runnable
{
private Product product;
public Producer(Product product)
{
this.product = product;
}
public void run()
{
while(true)
{
product.create();
}
}
}
class Consumer implements Runnable
{
private Product product;
public Consumer(Product product)
{
this.product = product;
}
public void run()
{
while(true)
{
product.get();
}
}
}