• java 生产者和消费者问题(线程)


    生产者,消费者模式

    package test;
    
    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) {
             EventStorage storage = new EventStorage();  
                Producer producer = new Producer(storage);  
                Thread thread1 = new Thread(producer); 
                Consumer consumer = new Consumer(storage);  
                Thread thread2 = new Thread(consumer); 
                thread1.start();
                thread2.start();
        }
    }
    /**
     * 缓冲区
     * @author Administrator
     *
     */
     class EventStorage{
        private int maxSize;//最大生产数
        private List<Date> storage;
        /*
         * 设置最大生产数
         */
        public EventStorage(){
            maxSize=10;
            storage=new LinkedList<Date>();
        }
            //设置线程等待方法
            public synchronized void set(){
                while(storage.size()==maxSize){
                    try {
                        wait();//等待
               System.out.println("调用方法set");
    } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } storage.add(new Date()); System.out.printf("Set: %d", storage.size()); } } public synchronized void get(){ while (storage.size()==0) { try { wait();
            System.out.println("调用方法get"); }
    catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } System.out.printf("Get: %d: %s", storage.size(),((LinkedList<?>)storage).poll()); notifyAll(); } }   

    /**
    *生产者类
    * @author Administrator
    *
    */

    class Producer implements Runnable{
        private EventStorage storge;
         public Producer(EventStorage storage){
             this.storge=storage;
         }
        @Override
        public void run() {
            // TODO Auto-generated method stub
            for (int i = 0; i < 100; i++) {
                storge.set();
            }
        }
     }
     
    /**
    * 消费者类
    * @author Administrator
    *
    */
    class Consumer implements Runnable{ private EventStorage storage; public Consumer(EventStorage storage){ this.storage=storage; } @Override public void run() { // TODO Auto-generated method stub for (int i = 0; i <100; i++) { storage.get(); } } }
  • 相关阅读:
    Validator 字段验证
    DRF实现发送短信验证码接口
    云片网发送短信验证码
    DRF自定义用户认证
    php服务器端与android客户端通信问题
    转 java调用php的webService
    Ubuntu12.04安装vim7.3
    ubuntu12.10更新源
    源列表
    Ubuntu 12.10 用wubi安装到硬盘中
  • 原文地址:https://www.cnblogs.com/lk617-home/p/8259753.html
Copyright © 2020-2023  润新知