package com.cwcec.test;

class Resource
{
private int count = 0;
private boolean flag = false; public synchronized void set(int count)
{
if(flag)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
this.count = count;
flag = true;
System.out.println(Thread.currentThread().getName() + "...生产者..." + count);
this.notify();
} public synchronized void out()
{
if(!flag)
{
try {
this.wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + "...消费者..." + count);
flag = false;
this.notify();
} } class Producer implements Runnable
{
private Resource r;
public Producer(Resource r)
{
this.r = r;
} public void run()
{
int x = 0;
while(true)
{
r.set( ++x);
}
}
} class Customer implements Runnable
{
Resource r;
public Customer(Resource r)
{
this.r = r; } public void run()
{
while(true)
{
r.out();
}
}
} public class Person { public static void main(String[] args) {
// TODO 自动生成的方法存根
Resource r = new Resource();
Producer p = new Producer(r);
Customer c = new Customer(r); Thread t1 = new Thread(p);
Thread t2 = new Thread(c); t1.start();
t2.start();
}
}
Output
Thread-0...生产者...61498
Thread-1...消费者...61498
Thread-0...生产者...61499
Thread-1...消费者...61499
Thread-0...生产者...61500
Thread-1...消费者...61500
Thread-0...生产者...61501
Thread-1...消费者...61501
Thread-0...生产者...61502
Thread-1...消费者...61502
Thread-0...生产者...61503
Thread-1...消费者...61503

Java 单生产者消费者问题的更多相关文章

  1. Java实现生产者消费者问题与读者写者问题

    摘要: Java实现生产者消费者问题与读者写者问题 1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从 ...

  2. Java设计模式—生产者消费者模式(阻塞队列实现)

    生产者消费者模式是并发.多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据.这篇文章我们来看看什么是生产者消费者模式,这个问 ...

  3. java实现生产者消费者问题

    引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...

  4. java实现生产者消费者问题(转)

    引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...

  5. [转载] Java实现生产者消费者问题

    转载自http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费 ...

  6. java实现生产者消费者模式

    生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将 ...

  7. java 线程 生产者-消费者与队列,任务间使用管道进行输入、输出 解说演示样例 --thinking java4

    package org.rui.thread.block2; import java.io.BufferedReader; import java.io.IOException; import jav ...

  8. Java 实现生产者 – 消费者模型

    转自:http://www.importnew.com/27063.html 考查Java的并发编程时,手写“生产者-消费者模型”是一个经典问题.有如下几个考点: 对Java并发模型的理解 对Java ...

  9. RabbitMQ入门学习系列(二),单生产者消费者

    友情提示 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题.可以直接在公众号<爱码农爱生活 >留言.必定会再次 ...

随机推荐

  1. JavaWeb总结(七)

    Web状态管理 - HTTP协议使用的是无状态的连接 - 对容器而言,每一个请求都来自于一个新的客户 解决方案-表单隐藏字段 <input type=”hidden” name=”session ...

  2. python基础学习1-三元表达式和lambda表达式

    #!/usr/bin/env python # -*- coding:utf-8 -*- 三元运算 if else 的简写 name ="alex" if 1==1 else &q ...

  3. c++ 常量指针

    一.指向常量的指针 定义形式: const 类型 * 指针名; 不能通过指针修改地址里的值. int i=0x123; const int *p=&i; *p=; //错误 //前置const ...

  4. Gitlab+Jenkins学习之路(二)之gitlab部署

    1.安装依赖及gitlab [root@linux-node1 ~]# yum install -y curl policycoreutils openssh-server openssh-clien ...

  5. #6472. 「ICPC World Finals 2017」难以置信的任务 Mission Improbable

    可以简化一下问题,假设Patrick把箱子都拿走但是原来有箱子的位置留下一个,现在要放箱子使得每行每列最大值都满足,最少放多少个. 设第\(i\)行的最大值是\(H(i)\),第\(i\)列的是\(W ...

  6. 模块化开发之butterknife 在 library中使用

    在Android开发中butterknife是一个很好的对资源初始化的工具,它可以使你的代码简洁通俗易懂,同时配合Android ButterKnife Zelezny插件可以让你写代码的速度提升至少 ...

  7. Oracle和sqlserver数据类型对应

    Sqlserver类型 Oracle类型 binary     RAW(50) bit     NUMBER(2) char     CHAR(10) datetime     DATE decima ...

  8. 回顾下TCP/IP协议

    首先要知道什么是TCP/IP协议,从字面意思来看TCP是“Transmission Control Protocol”的缩写,也就是传输控制协议.IP是“Internet Protocol”的缩写,即 ...

  9. Spring学习(5):DI的配置

    一.  一些概念 应用程序中说的依赖一般指类之间的关系. 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现: 依赖:当类与类之间有使用关系时就属于依赖关系,不同于关 ...

  10. Prometheus 添加报警规则

    https://prometheus.io/docs/prometheus/latest/migration/