<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          BeeOP高性能 Java 對象池

          聯(lián)合創(chuàng)作 · 2023-09-29 14:04

          BeeOP 小蜜蜂對象池是一款輕量高性能Java對象池。

          Maven坐標(biāo)(Java7)

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

          性能測試

          100萬次借用/歸還(1000線程 x1000次),獲取時間分布,平均時間

          對象池名 commons-pool2-2.9.0 BeeOP0.3_Fair BeeOP0.3_Compete
          平均時間 2.677456 0.000347 0.000187

          測試配置:PC:I5-4210M(2.6赫茲,雙核4線程),12G內(nèi)存 Java:JAVA8_64 Pool:初始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


          范例

          public interface Book {
             public String getName();
             public long getNumber();
          }
          public class JavaBook implements Book{
             private String name;
             private long number;
             public JavaBook() {
                 this("Java核心技術(shù)·卷2", System.currentTimeMillis());
             }
             public JavaBook(String name, long number) {
                 this.name = name;
                 this.number = number;
             }
             public String getName() {
                 return name;
             }
             public long getNumber() {
                 return number;
             }
             public String toString() {
                 return name;
             }
          
          
          public class JavaBookFactory implements BeeObjectFactory {
              public Object create(Properties prop) throws BeeObjectException {
                  return new JavaBook("Java核心技術(shù)·卷1", System.currentTimeMillis());
              }
              public void setDefault(Object obj) throws BeeObjectException { }
              public void reset(Object obj) throws BeeObjectException { }
              public void destroy(Object obj) { }
              public boolean isAlive(Object obj, long timeout) {
                  return true;
              }
          }
          public class TestBookPool{
            public static void main(String[]){
                BeeObjectSourceConfig config = new BeeObjectSourceConfig();
                config.setObjectFactory(new JavaBookFactory());
                config.setObjectInterfaces(new Class[]{Book.class});
                BeeObjectSource obs = new BeeObjectSource(config);
                
                BeeObjectHandle handle = null;
                try {
                     handle = obs.getObject();
                     Object v=handle.call("getName");
                     System.out.println("Book name:"+v);
                 } catch (BeeObjectException e) {
                 } finally {
                     if (handle != null)
                         handle.close();
                 }
              }
          }

          功能支持

          1:對象借用超時

          2:對象借用支持公平與競爭模式

          3:支持對象安全關(guān)閉

          4:斷網(wǎng)對象池自動恢復(fù)

          5:閑置超時和持有超時處理

          6:若對象發(fā)生異常,池自動增補(bǔ)

          7:對象回收時重置

          8:對象池重置

          9:支持JMX


          配置項說明

          配置項 描述 備注
          poolName 池名 如果未賦值則會自動產(chǎn)生一個
          fairMode 是否公平模式 默認(rèn)false,競爭模式
          initialSize 池初始創(chuàng)建對象數(shù) 默認(rèn)為0
          maxActive 池最大創(chuàng)建對象數(shù) 默認(rèn)為10個
          borrowSemaphoreSize 對象借線程最大并行數(shù) 默認(rèn)取最大對象數(shù)/2與cpu核心數(shù)的最小值
          maxWait 對象借用等待最大時間(毫秒) 默認(rèn)8秒,對象請求最大等待時間
          idleTimeout 對象閑置最大時間(毫秒) 默認(rèn)3分鐘,超時會被清理
          holdTimeout 對象被持有不用最大時間(毫秒) 默認(rèn)5分鐘,超時會被清理
          forceCloseObject 是否需要暴力關(guān)閉對象 池關(guān)閉或重置,使用,默認(rèn)false;true:直接關(guān)閉使用中對象,false:等待處于使用中歸還后再關(guān)閉
          waitTimeToClearPool 延遲清理的時候時間(秒) 默認(rèn)3秒,非暴力清理池下,還存在使用中的對象,延遲等待時間再清理
          idleCheckTimeInterval 對象閑置掃描線程間隔時間(毫秒) 默認(rèn)5分鐘
          objectFactoryClassName 自定義的對象工廠類名 默認(rèn)為空
          enableJmx JMX監(jiān)控支持開關(guān) 默認(rèn)false
          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  双飞av | 翔田千里视频在线观看 | 日韩AV免费| 手机自拍偷拍狼友视视频 | 午夜精品尤物福利视频 |