Chinaunix首页 | 论坛 | 博客
  • 博客访问: 275532
  • 博文数量: 81
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 878
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-25 23:20
文章分类

全部博文(81)

文章存档

2017年(45)

2016年(20)

2015年(2)

2014年(14)

我的朋友

分类: C#/.net

2014-07-27 23:08:05

import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

public class Consumer extends Thread {
    private String product;
    private Queue storeHouse = new LinkedBlockingQueue();
    
    public Consumer(){
        
    }
    
    public Consumer(Queue  storeHouse){
        this.storeHouse = storeHouse;
    }

    public void consume(){
        while (true) {
            synchronized (storeHouse) {
                    try {
                    while (storeHouse.isEmpty()) {
                        System.out.println("storeHouse is empty , please wait");
                        storeHouse.wait();
                        }
                }catch (InterruptedException ie){
                    
                }
            }
            product = storeHouse.poll();
            System.out.println("Consume :"+product);
        }
    }
    
    public void run() {
        consume();
    }
    
}

 



import java.util.Queue;
import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue;

public class Producer extends Thread {
    private String product;
    private Queue storeHouse = new LinkedBlockingQueue();
    
    public Producer(){
        
    }
    
    public Producer(Queue  storeHouse){
        this.storeHouse = storeHouse;
    }
    
    public String getProduct() {
        return product;
    }

    public void setProduct(String product) {
        this.product = product;
    }

    @Override
    public void run(){
        produce();
    }
    
    public void produce(){
        while (true) {
            synchronized (storeHouse) {
                setProduct(getRandomString(5)) ;
                storeHouse.add(product);
                System.out.println("Produce : "+getProduct());
                try {
                    storeHouse.notifyAll();
                    Thread.sleep(10);
                }catch (InterruptedException e){
                    return ;
                }
            }
        }
    }
    
    public static String getRandomString(int length){  
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  
        Random random = new Random();  
        StringBuffer stringBuffer = new StringBuffer();  
          
        for(int i = 0 ; i < length; ++i){  
            int number = random.nextInt(62);//[0,62)  
              
            stringBuffer.append(str.charAt(number));  
        }  
        return stringBuffer.toString();  
    } 
    
}

 



import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

public class ProducerConsumer {
    
    private int MAX = 10;

    public ProducerConsumer() {
    }
    
    public static void main(String[] args) {
        Queue storeHouse = new LinkedBlockingQueue(); 
        Producer producer1 = new Producer(storeHouse); 
        Producer producer2 = new Producer(storeHouse); 
        Producer producer3 = new Producer(storeHouse); 
        Consumer comsumer1 = new Consumer(storeHouse); 
        Consumer comsumer2 = new Consumer(storeHouse); 
        Consumer comsumer3 = new Consumer(storeHouse); 
        Consumer comsumer4 = new Consumer(storeHouse); 
        Thread p1 = new Thread(producer1); 
        Thread p2 = new Thread(producer2); 
        Thread p3 = new Thread(producer3); 
        Thread c1 = new Thread(comsumer1); 
        Thread c2 = new Thread(comsumer2); 
        Thread c3 = new Thread(comsumer3); 
        Thread c4 = new Thread(comsumer4);
        p1.start(); 
        p2.start(); 
        p3.start();
        c1.start();
        c2.start();
        c3.start();
        c4.start();
   }
}

阅读(2022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~