您的位置:首页 > 产品设计 > UI/UE

BlockingQueue实现生产者、消费者模式

2017-04-28 09:50 190 查看
BlockingQueue可以作为线程间数据共享通道,它会让服务线程在队列为空时进行等待,而当有新消息进入队列后,自动将线程唤醒。

向队列添加数据可以使用offer()方法或put()方法,它们都是向队列尾部添加元素,区别在于如果队列满了offer返回false,而put会一直等待。相对的取出元素可以使用poll()方法或take()方法,它们都从队列头部获得一个元素,区别在于如果队列为空poll返回null,而take一直等到有新元素添加。put和take方法体现了blocking(阻塞)的用途。

以下是BlockingQueue的实现类之一LinkedBlockingQueue的put及take方法



红框中代码含义是当队列满时,线程进行等待



使用LinkedBlockingQueue来实现生产者、消费者模式会简单很多,简单示例如下:



注意这里队列长度为1,以下是输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息