等待/唤醒机制是多线程之间进行通信(同步)的一种方式,这里对它在Java中的使用做一个总结。
Object的wait()和notify()
这个算是比较原始的一种等待/唤醒机制,这两个方法都是Object类中定义的方法,也就是说每个对象都拥有这两个方法。
它们一般都是和synchronized关键字配合使用的。
Condition接口
Condition接口是为了对Lock的一个等待/通知机制的实现。这里需要提一下,Lock接口是在synchronized后面提出的锁机制,相比于synchronzied关键字,它能够响应中断。而Condition正是为Lock中提供了等待/通知机制。
阻塞队列
阻塞队列也是一种线程间通信的方式,其核心在于两个线程互相通信去使用同一个队列,而这两个线程间的通信就是通过等待/通知机制完成的。在阻塞队列中,如果生产者线程发现当前队列满了,那么他就会调用await()方法,挂起生产者线程。当消费者线程从队列中消费了元素后,然后通过signal()方法唤醒生产线程。