BeeOP 高性能 Java 对象池开源项目

我要开发同款
匿名用户2021年01月04日
46阅读
开发技术Java
所属分类程序开发、数据库连接池
授权协议GPL-3.0

作品详情

BeeOP小蜜蜂对象池是一款轻量高性能Java对象池。

Maven坐标(Java7)

dependency><groupId>com.github.chris2018998</groupId><artifactId>beeop</artifactId><version>1.0.3</version></dependency

性能测试

100万次借用/归还(1000线程x1000次),获取时间分布,平均时间

对象池名commons-pool2-2.9.0BeeOP0.3_FairBeeOP0.3_Compete平均时间2.6774560.0003470.000187测试配置:PC:I5-4210M(2.6赫兹,双核4线程),12G内存Java:JAVA8_64Pool:初始10,最大10

日志文件:https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/ObjectPool.log

源码位置:https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/BeeOP_Test.rar

范例

publicinterfaceBook{publicStringgetName();publiclonggetNumber();}publicclassJavaBookimplementsBook{privateStringname;privatelongnumber;publicJavaBook(){this("Java核心技术·卷2",System.currentTimeMillis());}publicJavaBook(Stringname,longnumber){this.name=name;this.number=number;}publicStringgetName(){returnname;}publiclonggetNumber(){returnnumber;}publicStringtoString(){returnname;}publicclassJavaBookFactoryimplementsBeeObjectFactory{publicObjectcreate(Propertiesprop)throwsBeeObjectException{returnnewJavaBook("Java核心技术·卷1",System.currentTimeMillis());}publicvoidsetDefault(Objectobj)throwsBeeObjectException{}publicvoidreset(Objectobj)throwsBeeObjectException{}publicvoiddestroy(Objectobj){}publicbooleanisAlive(Objectobj,longtimeout){returntrue;}}publicclassTestBookPool{publicstaticvoidmain(String[]){BeeObjectSourceConfigconfig=newBeeObjectSourceConfig();config.setObjectFactory(newJavaBookFactory());      config.setObjectInterfaces(newClass[]{Book.class});BeeObjectSourceobs=newBeeObjectSource(config);BeeObjectHandlehandle=null;try{handle=obs.getObject();Objectv=handle.call("getName");System.out.println("Bookname:"+v);}catch(BeeObjectExceptione){}finally{if(handle!=null)handle.close();}}}

功能支持

1:对象借用超时

2:对象借用支持公平与竞争模式

3:支持对象安全关闭

4:断网对象池自动恢复

5:闲置超时和持有超时处理

6:若对象发生异常,池自动增补

7:对象回收时重置

8:对象池重置

9:支持JMX

配置项说明

配置项描述备注poolName池名如果未赋值则会自动产生一个fairMode是否公平模式默认false,竞争模式initialSize池初始创建对象数默认为0maxActive池最大创建对象数默认为10个borrowSemaphoreSize对象借线程最大并行数默认取最大对象数/2与cpu核心数的最小值maxWait对象借用等待最大时间(毫秒)默认8秒,对象请求最大等待时间idleTimeout对象闲置最大时间(毫秒)默认3分钟,超时会被清理holdTimeout对象被持有不用最大时间(毫秒)默认5分钟,超时会被清理forceCloseObject是否需要暴力关闭对象池关闭或重置,使用,默认false;true:直接关闭使用中对象,false:等待处于使用中归还后再关闭waitTimeToClearPool延迟清理的时候时间(秒)默认3秒,非暴力清理池下,还存在使用中的对象,延迟等待时间再清理idleCheckTimeInterval对象闲置扫描线程间隔时间(毫秒)默认5分钟objectFactoryClassName自定义的对象工厂类名默认为空enableJmxJMX监控支持开关默认false
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论