阻塞队列之基本概念
生产者消费者概念
生产者消费者是一种设计模式。让生产者和消费者基于一个容器来解决强耦合问题
生产者和消费者彼此之间通过一个容器(队列)来进行通讯
JUC阻塞队列的常用存取方法
常用的存取方法都在JUC包下的BlockingQueue接口中
生产者存储方法:
- add(E):添加数据到队列中,如果队列满了,无法存储,并且抛出异常
- offer(E):添加数据到队列中,如果队列满了,返回false
- offer(E, timeout, unit):添加数据到队列中,如果队列满了,阻塞timeout时间,过了时间依然没有添加成功,返回false
- put(E):添加数据到队列中,如果队列满了,挂起线程,等待队列中有空闲位置,再存储数据
消费者取数据方法:
- remove():从队列中移除数据,如果队列为空,抛出异常
- poll():从队列中移除数据,如果队列为空,返回null
- poll(timeout, unit):从队列中移除数据,如果队列为空,挂起线程timeout时间,等生产者存储数据,再获取
- take():从队列中移除数据,如果队列为空,挂起线程,直到队列中有数据