线程的等待与唤醒

通过线程同步的模拟延迟时,实现的时候发现经常出现某一个线程一直执行,但是其他线程交替不起来的情况。这时候,就要引入一个线程的等待与唤醒机制。
参考Object类的线程等待与唤醒,可以发现有下面三个方法与之相关。

  • public final void wait() throws InterruptedException
  • public final void notify()
  • public final void notifyAll()

此处参考死锁的信号量,设置一个标志,当正在生产数据的时候,不允许消费者消费。当消费者正在消费的时候,不允许生产者生产。然后再各自操作完成后,还原标志信号量,然后将线程唤醒。注意,使用super.*的方式调用wait和notify方法。

你可能感兴趣的:(线程的等待与唤醒)