1、首先定义一个池,重点: 定义一个什么资源(R)的池子, 池子应该有增删改查、大小等功能。
protected interface Pool<R> {
public R get();
public R put(R resource);
public boolean remove(R resource);
public void clear();
public Collection<R> values();
public int size();
}
2、定义完池子后、确定池子的类型,也即池的实现
public enum PoolType {
Reusable, ThreadLocal, RoundRobin;
池子的实现描述: Reusable ,把资源放到一个LinkedList 中,使用的时候从List中移除、使用完后再放回
ThreadLocal, 基于ThreadLocal 线程安全的线程池,用于多线程并发时
RoundRobin ,基于copyonWriteArrayList (一个ArrayList线程安全的变体,适用于读多写少)的一个池,取一次然后+1接下来除size() 求余、然后再get
3、 池子中放什么、是不是需要MapPool(不同的key对应不同的池),接下来梳理一下hbase HTable的情况