当前位置:首页 > 开发 > 编程语言 > Java > 正文

java 实现生产者消费者模式

发表于: 2014-05-09   作者:annan211   来源:转载   浏览次数:
摘要: package cosu_pro.pc; import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.c
package cosu_pro.pc;

import java.util.Random;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;

public class LinkBolckingQueuePC {
	public static void main(String[] args) {
		Storage storage = new Storage();
		Consumer c = new Consumer(storage);
		Producer p = new Producer(storage);

		ExecutorService execuService = Executors.newCachedThreadPool();
		execuService.submit(p);
		execuService.submit(c);
	}

}

// storage
 class Storage{
	 BlockingQueue<Integer> storage = new LinkedBlockingQueue<Integer>(10);

	 public int  push(int i){
		 storage.add(i);
		 return i;
	 }

	 public int prop() throws InterruptedException{
		return  storage.take();
	 }
 }

 // consumer
 class Consumer implements Runnable{

	private Storage storage = null;
	public Consumer(Storage s){
		this.storage = s;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			try {
				System.out.println("消费商品-----"+storage.prop());
				Thread.yield();
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
 }

 class Producer implements Runnable{
	 private Storage storage = null;
	 public Producer(Storage s){
		 this.storage = s;
	 }
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			System.out.println("生产商品----"+storage.push(new Random().nextInt(10)));
			try {
				Thread.yield();
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

 }

java 实现生产者消费者模式

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
线程间的通信: 其实就是多个线程再操作同一个资源,但是操作的动作不同 当某个线程进入synchronize
Java 语言实现生产者 -- 消费者模式,本文采用1个生产者和3个消费者,以体现多线程并发过程中应该注
架构设计:生产者/消费者模式 http://www.sina.com.cn 2009年07月30日 00:49 IT168.com 文本Tag:
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程
线程间的通信: 其实就是多个线程再操作同一个资源,但是操作的动作不同 当某个线程进入synchronize
在操作系统中有一类问题被称为生产者消费者问题:意为,有数个生产者生产产品,有数个消费者消费产
2009-03 作者:编程随想 来源:编程随想的博客 [0]:概述 今天打算来介绍一下“生产者/消费者模式
[0]:概述 今天打算来介绍一下“生产者/消费者模式”,这玩意儿在很多开发领域都能派上用场。由于
需求: 多个生产者不断的生产产品,多个消费者不断的消费产品,仓库可以存放10个产品。 第一批产品需
  上篇文章尝试着使用head lock和tail lock分别在Get和Add元素时,对队列进行上锁,这样就避免了
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号