java高级——生产者消费者问题
多线程是一个很重要的应用,本节讲述多线程中同步问题
public class ThreadDemo {
    public static void main(String[] args) {
        Resource r = new Resource();
        Producer p1 = new Producer(r);
        Consumer c1 = new Consumer(r);
        new Thread(p1).start();
        new Thread(p1).start();
        new Thread(c1).start();
        new Thread(c1).start();
    }
}
/*资源类*/
class Resource {
    private String name;
    private boolean flag = false;//资源存在标记
    //生产资源
    public synchronized void set(String name) {
        while (flag) {
            try {
                this.wait();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        this.name = name;
        System.out.println(Thread.currentThread().getName() + "生成者" + name);
        flag = true;
        this.notifyAll();
    }
    //消费资源
    public synchronized void get() {
        while (!flag) {
            try {
                this.wait();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName() + "消费者" + name);
        flag = false;
        this.notifyAll();
    }
}
/*生产者类*/
class Producer implements Runnable {
    private Resource r;
    public Producer(Resource r) {
        this.r = r;
    }
    public void run() {
        while (true) {
            r.set("商品");
        }
    }
}
/*消费者类*/
class Consumer implements Runnable {
    private Resource r;
    public Consumer(Resource r) {
        this.r = r;
    }
    public void run() {
        while (true) {
            r.get();
        }
    }
}
上面的代码实现了同步外,还解决了生成一次消费一次的工厂生产问题
java高级——生产者消费者问题的更多相关文章
- Java实现生产者消费者问题与读者写者问题
		
摘要: Java实现生产者消费者问题与读者写者问题 1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从 ...
 - Java设计模式—生产者消费者模式(阻塞队列实现)
		
生产者消费者模式是并发.多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据.这篇文章我们来看看什么是生产者消费者模式,这个问 ...
 - java实现生产者消费者问题
		
引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...
 - java实现生产者消费者问题(转)
		
引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...
 - [转载] Java实现生产者消费者问题
		
转载自http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费 ...
 - java实现生产者消费者模式
		
生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将 ...
 - java 线程    生产者-消费者与队列,任务间使用管道进行输入、输出  解说演示样例  --thinking java4
		
package org.rui.thread.block2; import java.io.BufferedReader; import java.io.IOException; import jav ...
 - Java 实现生产者 – 消费者模型
		
转自:http://www.importnew.com/27063.html 考查Java的并发编程时,手写“生产者-消费者模型”是一个经典问题.有如下几个考点: 对Java并发模型的理解 对Java ...
 - Java——Java实现生产者消费者
		
1.生产/消费者模型 生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括"生产者"."消费者"."仓库"和"产品" ...
 
随机推荐
- Redis学习笔记(八) 基本命令:SortedSet操作
			
原文链接:http://doc.redisfans.com/sorted_set/index.html SortedSet的数据结构类似于Set,不同的是Sorted中的每个成员都分配了一个值(Sco ...
 - [makefile]如何设置不同目录的代码(.c),生成到指定目录下(./debug/.o))
			
部分代码跟makefile不在同一目录,有没有好的方法来设置依赖关系,我找到三种方法,但感觉都不完美,下面我会把他列出来并加以说明,不知有没有更好的方法,makefile本身也不是很熟,请大家指教: ...
 - xbox 相关
			
https://live.xbox.com/zh-CN/avatareditor xboxgames://
 - SwipeRefreshLayout的使用,下拉刷新
			
1. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android ...
 - C语言基本语法——预处理器和预处理指令
			
1.什么是预处理器 2.什么是预处理器指令 3.预处理器指令 4.宏指令 5.宏函数 6.宏函数的优缺点 7.条件编译指令 1.什么是预处理器 • 预处理器是一个程序,用来处理源程序中的预处理指令. ...
 - 查看Linux系统信息命令
			
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...
 - 刷新页面vuex数据不消失和不跳转页面
			
先说点什么 vuex和路由拦截这一块捣鼓的有一段时间了,总算是爬出来了,特地来分享一下,首先声明没有什么基础介绍,用的是登录状态存储sessionStorage的方法!!! 进入正题 刷新 刷新相当与 ...
 - AjAX 常用参数
			
1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...
 - 原生javaScript完成Ajax请求
			
使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; i ...
 - jenkins 安装遇到的坑
			
最后启用安全的时候遇到一点坑,直接写了一个用户上去,没有勾选权限,然后在登录就说没有 overright/等,然后需要修改配置文件conf.xml 在主目录下. ...