91. Print alternate alphabet using two threads - prabhatrocks07/Core-Java-Programming GitHub Wiki
public class PrintAlternateAlphabet {
public static void main(String[] args) {
char[] ch = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
PrintAlphabet printAlphabet = new PrintAlphabet(ch);
new Thread(() -> {
try {
printAlphabet.printEven();
} catch (Exception e) {
e.printStackTrace();
}
}).start();
new Thread(() -> {
try {
printAlphabet.printOdd();
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
}
class PrintAlphabet {
char[] ch;
int index;
public PrintAlphabet(char[] ch) {
this.ch = ch;
}
synchronized public void printEven() throws InterruptedException {
while(index < ch.length) {
if(index % 2 != 0){
wait();
}
if(index < ch.length) {
System.out.println(ch[index]);
}
index++;
notify();
}
}
synchronized public void printOdd() throws InterruptedException{
while(index < ch.length) {
if(index % 2 == 0){
wait();
}
if(index < ch.length) {
System.out.println(ch[index]);
}
index++;
notify();
}
}
}