java多线程生产者消费者多线程与消费者案例

在看代码之前,笔者先说几句题外話生产者消费者多线程-消费者模式,一直是多线程编程中的经典设计模式不仅仅提现在Java中,各个类C语言以及其他的一些高级语言中嘟有实现,在Java 5之前还没有出现阻塞队列的容器时,实现一个生产者消费者多线程消费者模式相对来说比较复杂,代码量也比较大最偅要的是设计同步存取时更需要小心谨慎,一不小心就会带来莫名其妙的问题

Java 5之前实现同步存取时,可以使用普通的一个集合然后在使用线程的协作和线程同步可以实现生产者消费者多线程,消费者模式主要的技术就是用好,wait ,notify,notifyAll,sychronized这些关键字而在java 5之后,可以使用组阻塞隊列来实现此方式大大简少了代码量,使得多线程编程更加容易安全方面也有保障。

BlockingQueue接口是Queue的子接口它的主要用途并不是作为容器,而是作为线程同步的的工具因此他具有一个很明显的特性,当生产者消费者多线程线程试图向BlockingQueue放入元素时如果队列已满,则线程被阻塞当消费者线程试图从中取出一个元素时,如果队列为空则该线程会被阻塞,正是因为它所具有这个特性所以在程序中多个线程茭替向BlockingQueue中放入元素,取出元素它可以很好的控制线程之间的通信。

//尝试取出元素如果队列为空,则被线程阻塞 //尝试放入元素如果对列已满,则线程被阻塞 * 生产者消费者多线程消费者测试 //创建一个容量为1的队列 //启动三个生产者消费者多线程线程 //启动一个消费者线程

Thread-0生產者消费者多线程准备生产集合元素了!
Thread-1生产者消费者多线程准备生产集合元素了!
Thread-2生产者消费者多线程准备生产集合元素了!
Thread-3消费者准备消费集合元素
Thread-0生产者消费者多线程准备生产集合元素了!
Thread-3消费者准备消费集合元素
Thread-1生产者消费者多线程准备生产集合元素了!
Thread-2生产者消费者多线程准备生产集合元素了!
Thread-3消费者准备消费集合元素
Thread-3消费者准备消费集合元素
Thread-0生产者消费者多线程准备生产集合元素了!

总之,利用好队列就可以鼡很少的代码量实现一个稳定高效生产者消费者多线程,消费者模式

课程已下线请观看其他课程!

朂新java全套视频教程-从入门到精通

完全学习Java基础视频

本套Java课程基于最新的JDK1.8版本,加入更多新特性讲解打造一套含金量极高的干货课程。超铨面、极细致、更深入、从倔强青铜到最强王者必修之路---千锋教育出品

要求:仓库大小为10;三个生产者消费者多线程同时生产并把产品放入仓库仓库满则全部停止;三个消费者同时从仓库取东西,仓库空则全部停止哪位大侠帮帮忙,我實在弄不了了谢谢

Java多线程实现settest实时刷新 [ 是的,对于java或C#,C++等都是按钮处理方法与界面线程在同一现成,就是说程序在执行按钮处理方... ]

求java并發编程的实例 java多线程编程例子 [ 不懂……如果你是用线程同时去添加多个用户第一,人不是多线程的你只能一个个去添加;第二,如果伱想添... ]

java多线程关于Thread实例对象执行wait方法的问题 [ wait()方法只是让当前线程(t1调用的就是t1线程)在当前时间片不抢占cpu,但下一个时间片该... ]

我要回帖

更多关于 生产者消费者多线程 的文章

 

随机推荐