zoukankan      html  css  js  c++  java
  • 生产者消费者

    package Test.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Plate {
    
        List<Object> eggs = new ArrayList<Object>();
    
        public synchronized Object getEgg() {
            while(eggs.size() == 0) {
                try {
                    wait();
                } catch (InterruptedException e) {
                }
            }
    
            Object egg = eggs.get(0);
            eggs.clear();// 清空盘子
            notify();// 唤醒阻塞队列的某线程到就绪队列
            System.out.println("拿到鸡蛋");
            return egg;
        }
    
        public synchronized void putEgg(Object egg) {
            while(eggs.size() > 0) {
                try {
                    wait();
                } catch (InterruptedException e) {
                }
            }
            eggs.add(egg);// 往盘子里放鸡蛋
            notify();// 唤醒阻塞队列的某线程到就绪队列
            System.out.println("放入鸡蛋");
        }
        
        static class AddThread extends Thread{
            private Plate plate;
            private Object egg=new Object();
            public AddThread(Plate plate){
                this.plate=plate;
            }
            
            public void run(){
                for(int i=0;i<5;i++){
                    plate.putEgg(egg);
                }
            }
        }
        
        static class GetThread extends Thread{
            private Plate plate;
            public GetThread(Plate plate){
                this.plate=plate;
            }
            
            public void run(){
                for(int i=0;i<5;i++){
                    plate.getEgg();
                }
            }
        }
        
        public static void main(String args[]){
            try {
                Plate plate=new Plate();
                Thread add=new Thread(new AddThread(plate));
                Thread get=new Thread(new GetThread(plate));
                add.start();
                get.start();
                add.join();
                get.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("测试结束");
        }
    }
    

      

  • 相关阅读:
    render :template 和 render :parital
    routes.rb和link_to的一些规则
    rails程序文件名命名规范
    Ruby的模型关系随笔
    Ruby的require相关知识
    rails中的form_for
    rails中的session
    RubyMine不能调试Rails项目的问题
    序列化后的json串与解析json串实体间的关系
    mysql还原数据库
  • 原文地址:https://www.cnblogs.com/king-/p/4832231.html
Copyright © 2011-2022 走看看