public class LetterA extends Thread {
private final static Object lock = new Object();
public LetterA() {
}
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
synchronized (lock) {
if (i / 2 != 0) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else System.out.print("A ");
lock.notifyAll();
}
}
}
}
private static void printLetters() {
LetterA letterA = new LetterA();
LetterB letterB = new LetterB();
letterA.start();
letterB.start();
class LetterA extends Thread {
@Override
public void run() {
for (int i=0; i<10; i++){
try {
System.out.println("A");
Thread.sleep(50);
} catch (Exception ex) {
}
}
}
}
class LetterB extends Thread {
@Override
public void run() {
for (int i=0; i<10; i++){
try {
System.out.println("B");
Thread.sleep(50);
} catch (Exception ex) {
}
}
}
}
...
private static void printLetters()
{
LetterA letterA = new LetterA();
LetterB letterB = new LetterB();
letterA.start();
letterB.start();
}