public class EvenOddWithTwoThreads **extends Thread**
{
private volatile int count = 1;
private volatile boolean flag = false;
@Override
public void run() {
while(count <=10){
synchronized (this) {
while(flag){
flag= false;
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() +count);
count= count+1;
flag = true;
notify();
}
}
}
public static void main(String[] args) {
EvenOddWithTwoThreads ins = new EvenOddWithTwoThreads();
**Thread t1 = new Thread(ins, "Odd Thread");**
**Thread t2 = new Thread(ins,"Even Thread");**
t1.start();
t2.start();
}
}
output:
Odd Thread1
Odd Thread2
Odd Thread3
Even Thread4
Odd Thread5
Even Thread6
Odd Thread7
Even Thread8
Odd Thread9
Even Thread10
public class EvenOddWithTwoThreads **implements Runnable**{
private volatile int count = 1;
private volatile boolean flag = false;
@Override
public void run() {
while(count <=10){
synchronized (this) {
while(flag){
flag= false;
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() +count);
count= count+1;
flag = true;
notify();
}
}
}
public static void main(String[] args) {
EvenOddWithTwoThreads ins = new EvenOddWithTwoThreads();
Thread t1 = new Thread(ins, "Odd Thread");
Thread t2 = new Thread(ins,"Even Thread");
t1.start();
t2.start();
}
}
output :
Odd Thread1
Even Thread2
Odd Thread3
Even Thread4
Odd Thread5
Even Thread6
Odd Thread7
Even Thread8
Odd Thread9
Even Thread10