天天看点

Java并发来一发(十三)线程的等待与通知机制

本文介绍的是Object的监视器方法wait/notify等,一般与sychronized关键字配套使用。

相关方法如下,所有方法使用的前提都是先获得锁:

  • wait(),调用该方法后线程进入等待状态,线程加入到等待队列,直到另一个线程通知或中断。
  • wait(long),线程进入超时等待状态,线程加入到等待队列,直到另一个线程通知或中断,或过一定毫秒数后返回。
  • wait(long,int),与wait(long)的区别是控制粒度更细,纳秒级别。
  • notify(),通知一个等待的线程,从等待队列移动到同步队列中,状态从等待状态变为阻塞状态,直调用到notify的线程释放锁,而阻塞的线程获得锁才返回。
  • notifyAll(),与notify的区别在于,通知的是所有等待的线程。

继续阅读