`
annan211
  • 浏览: 446598 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 实现生产者消费者模式

阅读更多
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();
			}
		}
	}

 }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics