Use Wait & Notify to Implement Two Threads Run Alternatively

时间:2023-03-08 22:30:40
public class ThreadCommunication {
public static void main(String[] args) {
Business business = new Business();
new Thread(() -> {
while (true) {
try {
business.thread1();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(() -> {
while (true) {
try {
business.thread2();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
} class Business {
private boolean thread1First = true; public synchronized void thread1() throws InterruptedException {
while (!thread1First) {
this.wait();
}
thread1First = !thread1First;
this.notify();
System.out.println("thread 1 is called!!!");
Thread.sleep(1000);
} public synchronized void thread2() throws InterruptedException {
while (thread1First) {
this.wait();
} thread1First = !thread1First;
this.notify();
System.out.println("thread 2 is invoked");
Thread.sleep(1000);
}
}