JAVA设计模式之享元模式(flyweight)
Posted 引路的风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,代表正在使用中 } } }
运行结果:
以上是关于JAVA设计模式之享元模式(flyweight)的主要内容,如果未能解决你的问题,请参考以下文章