• Java完成生产者消费者模型


    生产者和消费者模型,是多线程中的典型模型,这里使用Java完成该模型

    ServerTest.java 生产者代码

    package com.orange.threadmodel;
    
    import java.util.Queue;
    
    public class ServerTest implements Runnable{
    
        private Queue<String> queue;
        
        public ServerTest(Queue<String> queue){
            this.queue = queue;
        }
            
        @Override
        public void run() {
            while(true){
                try{
                    if(queue.size() < 10){
                        System.out.println("生成商品......");
                        queue.offer("String-->");
                        Thread.sleep(1000);
                    }else{
                        System.out.println("无法生成商品,库存满了");
                        Thread.sleep(3000);
                    }
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }        
    }

    ClientTest.java 消费者代码

    package com.orange.threadmodel;
    
    import java.util.Queue;
    
    public class ClientTest implements Runnable{
    
        private Queue<String> queue;
        
        public ClientTest(Queue<String> queue){
            this.queue = queue;
        }
        
        @Override
        public void run() {
                while(true){
                    try{
                        if(queue.isEmpty()){
                            System.out.println("商品消费完了,无法再消费......");
                            Thread.sleep(10000);
                        }else{
                            System.out.println("消费商品......");
                            queue.poll();
                            Thread.sleep(20000);
                        }
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
    }

    ModelClient.java 测试模型代码

    package com.orange.threadmodel;
    
    import java.util.Queue;
    import java.util.concurrent.ArrayBlockingQueue;
    
    public class ModelClient {
    
        private static Queue<String> queue = new ArrayBlockingQueue<String>(10);
        
        public static void main(String[] args){
            ServerTest st = new ServerTest(queue);
            ClientTest ct = new ClientTest(queue);
            Thread t1 = new Thread(st);
            Thread t2 = new Thread(ct);
            t1.start();
            t2.start();
        }
        
    }

    测试结果:

  • 相关阅读:
    十四、oracle 数据库管理--管理表空间和数据文件
    十一、oracle 数据库管理员
    十二、oracle 数据库(表)的逻辑备份与恢复
    九、oracle 事务
    十、oracle 常用函数
    八、oracle 分页
    七、oracle 表查询二
    五、oracle 表的管理
    六、表查询一
    四、oracle 用户管理(Profile)
  • 原文地址:https://www.cnblogs.com/djoker/p/6531533.html
Copyright © 2020-2023  润新知