public class printEvenAndOdd {
public static void main(String[] args) {
Num num =new Num();
Thread even = new Thread(new printEven(num));
Thread odd = new Thread(new printOdd(num));
even.start();
odd.start();
}
}
class printEven implements Runnable {
Num num;
public printEven(Num num) {
this.num = num;
}
public void run() {
while (num.i < 100) {
synchronized (num) {
System.out.println(Thread.currentThread().getName() + "-->" + num.i++);
num.notify();
try {
if (num.i < 100) {
num.wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
class printOdd implements Runnable {
Num num;
public printOdd(Num num) {
this.num = num;
}
public void run() {
while (num.i < 100) {
synchronized (num) {
System.out.println(Thread.currentThread().getName() + "-->" + num.i++);
num.notify();
try {
if (num.i < 100) {
num.wait();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
class Num {
int i =0;
}