1、使用Object的wait和notify
public class WaitAndNotifyDemo {public static void main(String[] args) throws InterruptedException {MThread mThread = new MThread(); synchronized (mThread) {try { mThread.start();// 主线程睡眠3sThread.sleep(3000);System.out.println("before wait");// 阻塞主线程 mThread.wait();System.out.println("after wait");} catch (InterruptedException e) {e.printStackTrace();} } } }class MThread extends Thread {public void run() {synchronized (this) {System.out.println("before notify"); notify();System.out.println("after notify"); }} }
运行结果:
before wait
before notify
after notify
after wait
两线程执行图序: