文档章节

生产者消费者模型

rakshasa
 rakshasa
发布于 2014/12/27 15:53
字数 164
阅读 12
收藏 0
package lock1;

import java.util.ArrayList;
import java.util.List;

class Producer implements Runnable {
	private Products stack;

	public Producer(Products stack) {
		this.stack = stack;
	}

	@Override
	public void run() {
		while (true) {
			stack.produce();
		}
	}
}

class Consumer implements Runnable {
	private Products stack;

	public Consumer(Products stack) {
		this.stack = stack;
	}

	@Override
	public void run() {
		while (true) {
			stack.consume();
		}
	}
}

class Products {
	private static final long serialVersionUID = 1L;
	private List<String> products = new ArrayList<String>();
	private int capacity = 10;

	public synchronized void produce() {
		while (products.size() > capacity) {
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		this.notify();
		String str = "生产者生产的产品!";
		System.out.println(str);
		products.add(str);
	}

	public synchronized void consume() {
		while (products.size() == 0) {
			try {
				this.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		this.notify();
		for (int i = 0; i < products.size(); i++) {
			System.out.println("消费者shiyong :" + products.get(i));
			products.remove(i);
		}
	}
}

public class ConsumerProducer {
	public static void main(String[] args) throws InterruptedException {
		Products products = new Products();
		Producer producer = new Producer(products);
		Consumer consumer = new Consumer(products);
		new Thread(producer).start();
		new Thread(consumer).start();
	}
}

  

本文转载自:http://www.cnblogs.com/focusj/archive/2012/01/05/2310924.html

rakshasa
粉丝 34
博文 142
码字总数 16820
作品 0
昆明
高级程序员
私信 提问
Java线程:并发协作-生产者消费者模型

Java线程:并发协作-生产者消费者模型 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。 实际上,准确...

scau_JD
2014/06/13
33
0
Linux 下多线程的消费者-生产者模型

消费者-生产者模型 所谓这个模型指在ipc时,由扮演的生产者进程产生数据,由扮演消费者的进程去拿走数据。 这个模型是由3种关系俩种角色一个场景所描述而成。 三种关系指: 消费者-消费者 --...

sdoyuxuan
2017/06/07
0
0
操作系统 — 生产者消费者模型

生产者消费者模型 所谓的生产者消费者模型就是一个类似于队列一样的东西串起来,这个队列可以想像成一个存放产品的"仓库",生产者只需要关心这个"仓库",并 不需要关心具体的消费者,对于生产...

Dawn_sf
2018/01/21
0
0
Java实现生产者-消费者模型

考查Java的并发编程时,手写“生产者-消费者模型”是一个经典问题。有如下几个考点: 对Java并发模型的理解 对Java并发编程接口的熟练程度 bug free coding style JDK版本:oracle java 1.8...

monkeysayhi
2017/11/20
0
0
多线程模拟实现生产者/消费者模型 (借鉴)

在生产者/消费者模型中,生产者Producer负责生产数据,而消费者Consumer负责使用数据。多个生产者线程会在同一时间运行,生产数据,并放到内存中一个共享的区域。期间,多个消费者线程读取内...

雪童子
2015/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部