public class Edd extends Thread {
private Object object;
private int n = 0;
public Edd(Object object) {
this.object = object;
//System.out.println("EddThread----" + object.toString());
}
@Override
public void run() {
// TODO Auto-generated method stub
while (n <= 10) {
synchronized (object) {
if (n % 2 == 0) {
System.out.println("EddThread----" + n++);
if(n==10){
Thread.interrupted();
}
} else {
object.notifyAll();
try {
object.wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
super.run();
}
}
public class Odd extends Thread {
private Object object;
private int n = 1;
public Odd(Object object) {
this.object = object;
//System.out.println("OddThread----" + object.toString());
}
@Override
public void run() {
// TODO Auto-generated method stub
while (n <= 10) {
synchronized (object) {
if (n % 2 != 0) {
System.out.println("OddThread----" + n++);
if(n==9){
Thread.interrupted();
}
} else {
object.notifyAll();
try {
object.wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
super.run();
}
}
public class ExpThread {
public static Object object;
public static void main(String[] args){
object = new Object();
Edd eddThread = new Edd(object);
Odd oddThread = new Odd(object);
eddThread.start();
oddThread.start();
}
}