多线程——消费者与生产者案例
来源:互联网 发布:淘宝公告栏素材 编辑:程序博客网 时间:2024/05/22 20:52
生产者
package producer_consumer;public class producer implements Runnable{private ShareResourse resource = null;producer(ShareResourse resource){this.resource = resource;}@Overridepublic void run() {for(int i = 0; i < 50; i++){if(i% 2 == 0){resource.push("春哥"+ i, "男");}else{resource.push("凤姐"+ i, "女");}}}}消费者
package producer_consumer;public class Consumer implements Runnable {private ShareResourse resource = null;public Consumer(ShareResourse resource){this.resource = resource;}@Overridepublic void run() {for(int i = 0; i < 50; i++){resource.popup();}}}资源管理区
package producer_consumer;//共享的资源姓名与性别public class ShareResourse {private String name;private String gender;private boolean isEmpty = true; // 表示共享资源对象是否为空的状态/** * 生产者想共享资源中存储数据 * * @param name * 姓名 * @param gender * 性别 */synchronized public void push(String name, String gender) {try {while (!isEmpty) { // 当isEmpty为false 不空的时候等着消费者来消费this.wait();//使用同步锁对象来调用,表示当前线程释放同步锁,进入等待池,只能被其他线程唤醒}//----生产开始------this.name = name;Thread.sleep(10);this.gender = gender;//----生产结束------this.notify();//唤醒一个消费者isEmpty = false;//设置资源部位空} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 消费者去除数据 */synchronized public void popup() {try {while(isEmpty){//空了,消费者等待this.wait();}//--------消费开始--------Thread.sleep(10);System.out.println(name + " - " + gender);//--------消费结束---------this.notify();//唤醒一个生产者isEmpty = true;} catch (InterruptedException e) {e.printStackTrace();}}}运作类:
package producer_consumer;//测试代码public class App {public static void main(String[] args) {ShareResourse resource = new ShareResourse();//启动生产者对象new Thread(new producer(resource)).start();//启动消费者线程new Thread(new Consumer(resource)).start();}}
阅读全文
1 0
- 多线程——消费者与生产者案例
- 多线程案例:生产者与消费者
- 多线程操作案例---生产者与消费者
- java多线程之生产者与消费者案例
- 多线程经典案例——生产者/消费者问题的Java实现与详解
- 多线程案例:生产者和消费者
- Java多线程与并发(五)之生产者与消费者案例
- 多线程——生产者消费者
- 多线程---生产者与消费者
- 多线程(生产者与消费者)
- 多线程 生产者与消费者
- JavaSE 多线程 线程间通信 生产者与消费者案例
- 关于java多线程——消费者与生产者1
- linux 多线程编程之——消费者与生产者
- Java多线程操作——生产者与消费者
- JAVA多线程之——经典面试消费者与生产者
- 生产者与消费者的案例
- 8、生产者与消费者案例
- VS2012的Web.config中使用machineKey
- 2016年大数据80篇爆款文章:这一年你追过的那些技术
- 【leetcode medium】2. Add Two Numbers
- / 与 //在Python3.0中的区别
- 【dp专题1】B
- 多线程——消费者与生产者案例
- 目录遍历的三种方法
- MQTT协议 格式
- Spring AOP 基础
- ACM零起点2017-7-25(随机数产生方法)
- java 语法 —— final
- Spring MVC + EasyUI实现地区级联
- LESS CSS 框架简介
- rabbitMQ php实践第一步,安装与其中的坑