I got it interview that:
Thread-A Prints Even numbers from 0
Thread-B prints Odd numbers from 1
I want to print 0 1 2 3 4.... in natural order till 1000 How can I achive.
I tried this way:
public class ThreadDemo2 {
static int aa = 0;
public static void main(String[] args) {
boolean mytime = true;
EvenThread et = new EvenThread(mytime);
OddThread ot = new OddThread(mytime);
et.start();
ot.start();
}
}
class EvenThread extends Thread {
boolean mytime;
int i = 0;
public EvenThread(boolean mytime) {
this.mytime = mytime;
}
public void run() {
//if (ThreadDemo2.aa == 0) {
for (int i = 0; i < 1000 && ThreadDemo2.aa == 0; i += 2) {
System.out.println(i);
ThreadDemo2.aa = 1;
try {
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
}/* else
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
class OddThread extends Thread {
boolean mytime;
int i = 1;
public OddThread(boolean mytime) {
this.mytime = mytime;
}
public void run() {
//if (ThreadDemo2.aa == 1) {
for (int i = 1; i < 1000 && ThreadDemo2.aa == 1; i += 2) {
System.out.println(i);
ThreadDemo2.aa = 0;
try {
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//ThreadDemo2.aa = 0;
//}
}
}