Java多线程——生产者消费者模式
来源:互联网 发布:网络词pc是什么意思啊 编辑:程序博客网 时间:2024/06/02 00:28
生产消费者模式,实现功能:1.生产者和消费者同时运行(多线程)。2.实现生产完一个对象后然后消费者消费,而不是生产者生产到一半时被消费者消费(同步锁synchronized)。3.实现生产者生产一个消费者消费一个,而不是消费者消费同一个产品(Object类的wait方法和notify方法)。
public class Share {//共享数据对象private String name;private String gender;private boolean isEmpty = true;synchronized public void push(String name, String gender){try {if(!isEmpty){this.wait();}this.name = name;Thread.sleep(10);this.gender = gender;isEmpty = false;this.notify();} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}synchronized public void pick(){try {if(isEmpty){this.wait();}Thread.sleep(10);System.out.println(this.name+"------"+this.gender);this.isEmpty = true;this.notify();} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}}}public class Producer implements Runnable{private Share share;public Producer(Share share){this.share = share;}@Overridepublic void run() {for(int i = 0;i<50;i++){if(i%2==0){share.push("a", "男");}else{share.push("b", "女");}//try {//Thread.sleep(200);//} catch (InterruptedException e) {//// TODO 自动生成的 catch 块//e.printStackTrace();//}}}}public class Consumer implements Runnable {private Share share;public Consumer(Share share) {super();this.share = share;}@Overridepublic void run() {for(int i = 0;i<50;i++){//try {//Thread.sleep(100);//} catch (InterruptedException e) {//// TODO 自动生成的 catch 块//e.printStackTrace();//}share.pick();//try {//Thread.sleep(100);//} catch (InterruptedException e) {//// TODO 自动生成的 catch 块//e.printStackTrace();//}}}}public class Test1 {public static void main(String[] args) {Share sh = new Share();new Thread(new Producer(sh)).start();new Thread(new Consumer(sh)).start();}}
0 0
- Java多线程——生产者消费者模式
- java多线程—消费者生产者模式
- Java多线程(5)——生产者消费者模式实践
- Java多线程——生产者和消费者模式
- java多线程 ----生产者消费者模式
- Java多线程 --- 生产者消费者模式
- Java多线程 生产者消费者模式
- java多线程---生产者消费者模式
- java 多线程 生产者消费者模式
- 【Java多线程】生产者消费者模式
- java多线程——生产者、消费者
- java多线程应用——生产者消费者
- JAVA多线程实现生产者——消费者
- -java多线程——生产者和消费者
- Java——生产者消费者多线程实现
- Java多线程—生产者-消费者问题
- 生产者—消费者模式
- java多线程之消费者生产者模式
- css中为什么需要浮动?
- 数据结构——线性表的整表创建(头插法、尾插法)
- Spring事务注解@Transactional效用实测
- LeetCode #12 Integer to Roman
- MVP 设计模式理解,实战理解MVP
- Java多线程——生产者消费者模式
- PAT乙级(Basic Level)真题 >查验身份证
- [BZOJ1026][SCOI2009]windy数
- JVM运行时数据区
- Fragment之添加显示流程源码分析
- excel进阶-数据透视表与透视图学习
- 企业级高并发缓存解决方案,你不得不听的踩坑故事
- 用HTML+PHP写一个留言板来进行XSS测试&学习 第三篇(简单的过滤标签功能实现&绕过)
- Java开发环境的安装