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

2021-01-26 07:15

阅读:547

标签:自定义   获取   class   @param   ret   阅读   tst   实现   使用   

享元模式就是所谓的池化的思想,数据库连接池、线程池、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 treads = new ArrayList();
    {
        for(int i = 0;i ){
            treads.add(new Thread("thread-"+i));
        }
    }

    public Thread getThread(){

        for(int j =0 ;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) {
            Thread t = pool.getThread();
            t.setState(); //获取一个线程那么将其状态设置为true,代表正在使用中
        }

    }


}

 运行结果:

技术图片

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

标签:自定义   获取   class   @param   ret   阅读   tst   实现   使用   

原文地址:https://www.cnblogs.com/sx-bj-srr/p/flyweight.html


评论


亲,登录后才可以留言!