Apache Common Pool Introduction

人走茶凉 提交于 2020-05-01 14:20:47

先说下主要的类和接口

ObjectPool 接口是“池”定义,GenericObjectPool 是它的实现。

PooledObject 接口是“池对象”定义,DefaultPooledObject 是它的实现。

PooledObjectFactory 接口是“产生池对象的工厂”定义,BasePooledObjectFactory是它的实现。

下面我们先用以上几个类和接口搭建一个租车实例。

package com.pulsar.pool;

import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.commons.pool2.impl.GenericObjectPool;

public class CPool {
    
    public static void main(String[] args){
        CarFactory poolFactory = new CarFactory();
        GenericObjectPool<Car> pool = new GenericObjectPool<>(poolFactory);
        try {
            Car car = pool.borrowObject();
            System.out.println(car);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static public class Car {
        public String toString(){
            return "BMW";
        }
    }

    static public class CarFactory extends BasePooledObjectFactory {
        @Override
        public Object create() throws Exception {
            return new DefaultPooledObject(new Car());
        }

        @Override
        public PooledObject wrap(Object o) {
            return (PooledObject)o;
        }
    }

}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!