Object的notify()和wait()方法


Object的wait()notify()方法

final Object lock = new Object();

// 线程A
synchronized(lock) {
    lock.wait();
    // ... 
}

// 线程B
synchronized(lock) {
    lock.notify();
    // ...
}
  • wait():在线程A中,调用锁的wait()方法,线程A释放此锁,进入等待状态
  • notify():在线程B中,调用锁的notify()方法,唤醒一个正在等待此锁的线程,即线程A,线程A进入常规状态,以常规的方式与其他线程继续竞争此锁

tip:线程A被唤醒后并不是立即继续执行之后的代码,只有当它重新抢占到锁之后才能继续执行


tip:调用锁的wait()和notify()方法的前提是,当前线程已经抢占到了此锁