I have implemented a simple example for inter thread communication which have 2 threads to print even and odd numbers in sequence.
I am looking for a feedback and points for improving the example.
My code looks like:
public class InterThreadCommunicationEvenOddExample
{
public static void main(String[] args)
{
NumberResource numberResource = new NumberResource();
new EvenThread(numberResource);
new OddThread(numberResource);
}
}
class EvenThread implements Runnable
{
NumberResource numberResource;
EvenThread(final NumberResource numberResource)
{
this.numberResource = numberResource;
new Thread(this, "Even").start();
}
public void run()
{
while (true)
{
System.out.println("Even Thread::" + this.numberResource.getNextEven());
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
}
}
}
class OddThread implements Runnable
{
NumberResource numberResource;
OddThread(final NumberResource numberResource)
{
this.numberResource = numberResource;
new Thread(this, "Odd").start();
}
public void run()
{
while (true)
{
System.out.println("Odd Thread::" + this.numberResource.getNextOdd());
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
}
}
}
class NumberResource
{
private int number = 0;
public synchronized int getNextEven()
{
while (isEven(number))
{
try
{
wait();
}
catch (InterruptedException e)
{
}
}
number++;
notify();
return number;
}
public synchronized int getNextOdd()
{
while (!isEven(number))
{
try
{
wait();
}
catch (InterruptedException e)
{
}
}
number++;
notify();
return number;
}
private boolean isEven(int number)
{
return number % 2 == 0;
}
}