• JAVA设计模式之享元模式(flyweight)


    享元模式就是所谓的池化的思想,数据库连接池、线程池、JAVA String用的就是享元模式。有兴趣可以去阅读其底层实现原理。这里就不赘述了。

    享元模式模拟java线程池代码如下:

    package com.srr.dp.flyweight;
    
    import java.util.ArrayList;
    import java.util.UUID;
    
    
    /**
     * 自定义线程
     */
    class Thread implements Runnable{
        public Thread(String name){
            this.name = name;
        }
        private String name;
    
        private boolean isRuning = false; //false:未运行,true:运行
    
        @Override
        public void run() {
    
        }
    
        public boolean getState(){
            return isRuning;
        }
    
        public void setState(){
            isRuning = true;
        }
    
        public String getName(){
            return name;
        }
    }
    
    public class TreadPool {
    
        private ArrayList<Thread> treads = new ArrayList<>();
        {
            for(int i = 0;i < 10;i++){
                treads.add(new Thread("thread-"+i));
            }
        }
    
        public Thread getThread(){
    
            for(int j =0 ;j< 10;j++){
                Thread t = treads.get(j);
                if(!t.getState()) {
                    System.out.println("从线程池中获取线程"+t.getName());
                    return t;
                }
            }
            //如果池子中线程都使用完,那么new新的线程
            Thread t = new Thread(UUID.randomUUID().toString());
            System.out.println("随机生成线程"+t.getName());
            return t;
        }
    
        /**
         * 测试
         * @param args
         */
        public static void main(String[] args) {
            TreadPool pool = new TreadPool();
    
            for(int i=0; i<12; i++) {
                Thread t = pool.getThread();
                t.setState(); //获取一个线程那么将其状态设置为true,代表正在使用中
            }
    
        }
    
    
    }

     运行结果:

  • 相关阅读:
    crm 4 注释与上传附件权限
    动态图片轮播
    PHP 连接 MSSQL
    php mssql 中文各种乱码
    百度地图逆地址解析
    Microsoft Visual C++ 2015 Redistributable(x64)
    服务器 vps 空间
    Python之路【第二篇】:Python基础(二)
    Python之路【第一篇】:Python简介和入门
    2016年会成为Java EE微服务年吗?
  • 原文地址:https://www.cnblogs.com/sx-bj-srr/p/flyweight.html
Copyright © 2020-2023  润新知