You are here: Home / Topics / Program to use wait( ) and notify( ) and implementing from Runnable interface in Java

Program to use wait( ) and notify( ) and implementing from Runnable interface in Java

Filed under: Java on 2023-10-16 06:49:38

//  Program to use wait( ) and notify( ) and implementing
//  from Runnable interface.

class Resource
{
int n = -1;
boolean flag = true;

synchronized void produce( int a )
{
 while( !flag )
 {
  try
  {
   wait();
  }
  catch( InterruptedException e )  {   }
 }
 n = a;
 System.out.println( " Producer ::: " + n ); 
 flag = false;
 notify();
}

synchronized int consume()
{
 while( flag )
 {
  try
  {
   wait();
  }
  catch( InterruptedException e )  {   }
 }
 flag = true;
 notify();
 System.out.println( " Consumer ::: " + n );
 return n;
}
}

class Producer implements Runnable
{
Resource s;
Thread t;

Producer( Resource r )
{
 s = r;  
 t = new Thread( this, "Producer");
 t.start();
}

public void run()
{
 for( int i=1 ; i<=10 ; i++ )
 {
  try
  {
   Thread.sleep( 300 );
  }
  catch( InterruptedException e )  {   }
  s.produce( i );
 }
 System.out.println( " Producer Terminating. " );
}
}

class Consumer implements Runnable
{
Resource s;
Thread t;

Consumer( Resource r )
{
 s = r;  
 t = new Thread( this, "Consumer");
 t.start();
}

public void run()
{
 int i;
 do
 {
  try
  {
   Thread.sleep( 300 );
  }
  catch( InterruptedException e )  {   }
  i = s.consume();
 }while( i != 10 );
 System.out.println("Consumer Terminating. " );
}
}

class WaitNotifyDemo
{
public static void main(String args[ ])
{
 Resource r = new Resource();
 new Producer( r );
 new Consumer( r );
}
}

 

Output:

Producer ::: 1
Consumer ::: 1
Producer ::: 2
Consumer ::: 2
Producer ::: 3
Consumer ::: 3
Producer ::: 4
Consumer ::: 4
Producer ::: 5
Consumer ::: 5
Producer ::: 6
Consumer ::: 6
Producer ::: 7
Consumer ::: 7
Producer ::: 8
Consumer ::: 8
Producer ::: 9
Consumer ::: 9
Producer ::: 10
Consumer ::: 10
Consumer Terminating.
Producer Terminating.

About Author:
K
Kirti     View Profile
I am from NCR region. Follow one course until sucess.