亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

struts源代碼閱讀(Commons-Pool包)

2019-11-18 12:54:54
字體:
來源:轉載
供稿:網友

  一、 XXXObjectPoolFactory
  
  這些類用來生成相應的XXXObjectPool,比如GenericKeyedObjectPoolFactory:這個類用來生成一個新的GenericKeyedObjectPool對象。它實際的作用只是保存創建一個GenericKeyedObjectPool對象所需要的配置參數。假如使用默認的配置參數生成一個GenericKeyedObjectPool對象,那么可以調用GenericKeyedObjectPoolFactory(KeyedPoolableObjectFactory factory, GenericKeyedObjectPool.Config config),其中Config類里保存所有的缺省配置參數。
  
  二、GenericKeyedObjectPool
  
  通過_poolMap來治理相應的對象鏈,key作為尋找不同對象鏈的線索。也就是說,一個GenericKeyedObjectPool中可以治理多個不同key的對象集合,每個集合通過_activeMap用來保存各個不同的Key當前的活動對象的數量(閑置對象的數量可以直接通過相應的CursorableLinkedList的size來獲取),可以通過getNumActive(Object key)和getNumIdle(Object key)方法獲取這
  
  兩個值。這個對象集合通過CursorableLinkedList來治理。
  
  這個類里的_maxIdle和_maxActive屬性是針對單個key對應的CursorableLinkedList而言的最大值,而_maxTotal屬性則是對所有的key表示的對象集合的總和的最大值。_totalActive+_totalIdle用來和_maxTotal的值進行對比,它們可以通過getNumActive()和getNumIdle()獲取。_poolList存放的值與 _poolMap 中的key值一樣,注重這個對象不是沒有用處的,因為CursorableLinkedList是一個答應多個線程同步迭代的類。
  
  1、幾個內置的static類型的變量:
  
  WHEN_EXHAUSTED_FAIL 這個屬性表明當對象池已經用盡時(比如說池中的對象數目已經達到了最大值),borrowObject方法應該馬上拋出NoSUChElementException異常。
  
  WHEN_EXHAUSTED_BLOCK 這個屬性表明當對象池已經用盡時(比如說池中的對象數目已經達到了最大值),borrowObject方法應該等待,直到對象池中有一個對象可以讓它返回,或者達到了最大等待時間(DEFAULT_MAX_WAIT)。
  
  WHEN_EXHAUSTED_GROW 這個屬性表明即使在對象池已經用盡時(比如說池中的對象數目已經達到了最大值),borrowObject方法應該仍然返回一個對象。
  
  DEFAULT_WHEN_EXHAUSTED_ACTION 這個屬性表明當對象池用盡的時候(比如說池中的對象數目已經達到了最大值)應該采取上面的那種策略。
  
  DEFAULT_MAX_IDLE 和 DEFAULT_MAX_ACTIVE分別指定了在池中對大的空閑和活動對象的數目。DEFAULT_MAX_TOTAL表明對象池答應存在的最大對象數量。
  
  2、CursorableLinkedList
  
  它實際是一個雙向列表,與LinkedList的區別是:它答應多個線程執行迭代。它的實現思路是:在每次生成一個Cursor時:CursorableLinkedList.Cursor cursor(int i),都會吧這個新生成的Cursor對象包裝到一個 WeakReference 中:_cursors.add( new WeakReference(cur) );在不需要的的時候需要調用Cursor. close()方法取消注冊。而Cursor實際是一個以內嵌類的方式的實現了ListIterator接口的類。WeakReference 不會增加被其包裝的類的引用次數,換句話說,它不會影響JVM的垃圾收集。
  
  3、borrowObject(Object key)
  
  這個方法用來從相應的key表示的對象集合中取出一個對象。假如對應的對象集合不存在,會創建一個這樣的集合。假如集合當前沒有閑置的對象可以返回,并且當前的active < _maxActive && totalActive + _totalIdle < _maxTotal,那么通過KeyedPoolableObjectFactory創建一個新的對象;否則就根據_whenExhaustedAction的設定執行相應的操作。要注重每次都會執行_factory.activateObject(key,pair.value)方法初始化這個對象。在返回這個對象之前,假如設定了_testOnBorrow標志則調用_factory.validateObject(Object key, Object obj)方法,假如不符合要求會拋出NoSuchElementException異常,否則返回這個對象。
  
  4、returnObject(Object key, Object obj)
  
  這個方法用來把一個對象返回給key表示的對象集合,這個方法的執行過程與borrowObject(Object key)方法相似。它會根據_testOnReturn標志執行_factory.validateObject(Object key, Object obj)方法檢查返回的對象是否合格。要注重每次都會執行 _factory.passivateObject(key, obj)方法“消除”這個對象。
  
  5、過期類的回收:
  
  Evictor 為一個內嵌類,實現自Runnable接口。它每過_timeBetweenEvictionRunsMillis毫秒會調用一次evict()方法,在后臺收集垃圾壽命超過_minEvictableIdleTimeMillis毫秒的對象。每當我們創建一個GenericKeyedObjectPool對象的時候,這個類會被自動創建,并且被啟動。evict() 方法很簡單,它首先創建一個_evictionKeyCursor = _poolList.cursor()對象,然后根據key遍歷每一個對象集合。
  
  查找到過期的就會刪除。
  
  三、SoftReferenceObjectPool
  
  通過SoftReference進行對象的保存,這個SoftReference的好處是你不需要自己進行收集,它會在JVM的內存用盡時被自動回收。這種對象池的特色是:
  
  a、可以保存任意多個對象,不會有容量已滿的情況發生。
  
  b、在對象池已空的時候,調用它的borrowObject方法,會自動返回新創建的實例。
  
  c、可以在初始化同時,在池內預先創建一定量的對象。
  
  d、當內存不足的時候,池中的對象可以被java虛擬機回收。
  
  四、StackObjectPool 和 StackKeyedObjectPool
  
  通過一個Stack對對象進行治理,要注重這個Stack是繼續自Vector對象的。因此雖然線程安全,但是效率較低。這種對象池的特色是:
  
  a、可以為對象池指定一個初始的參考大?。ó斂臻g不夠時會自動增長)。
  
  b、在對象池已空的時候,調用它的borrowObject方法,會自動返回新創建的實例。
  
  c、可以為對象池指定一個可保存的對象數目的上限。達到這個上限之后,再向池里送回的對象會被自動送去回收。
  
  五、PoolableObjectFactory
  
  Pool組件利用PoolableObjectFactory來照看被池化的對象。ObjectPool的實例在需要處理被池化的對象的產生、激活、掛起、校驗和銷毀工作時,就會調用跟它關聯在一起的PoolableObjectFactory實例的相應方法來操作。 用戶需要自己實現這個接口。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲成人精品| 成人激情免费在线| 欧美电影免费观看| 国产精品一香蕉国产线看观看| 久久精品电影网站| 91精品国产高清久久久久久91| 国产福利成人在线| 久久久av亚洲男天堂| 国产精品99久久久久久人| 伊人伊成久久人综合网站| 日本不卡高字幕在线2019| 午夜精品一区二区三区在线视频| 欧美在线视频一区二区| 亚洲一品av免费观看| 一区二区三区视频观看| 亚洲欧美中文日韩v在线观看| 日韩av免费一区| 亚洲欧美国产日韩天堂区| 久久夜色精品国产| 日韩国产高清污视频在线观看| 91热福利电影| 亚洲精美色品网站| 日韩av免费观影| 久久激情五月丁香伊人| 亚洲欧美国产一区二区三区| 不卡av电影在线观看| 日韩一中文字幕| 九九热最新视频//这里只有精品| 精品国产区一区二区三区在线观看| 亚洲free性xxxx护士hd| 久久精品亚洲热| 日韩欧美精品免费在线| 少妇激情综合网| 97精品视频在线观看| 久久在线免费观看视频| 日韩电视剧免费观看网站| 自拍偷拍亚洲精品| 亚洲白虎美女被爆操| 欧美日韩高清在线观看| 91免费的视频在线播放| 91sa在线看| 91在线直播亚洲| 欧美日韩在线视频一区二区| 欧美另类极品videosbest最新版本| 欧美性猛交xxxx免费看| 日韩中文av在线| 欧美成人中文字幕| 欧美成人黑人xx视频免费观看| 91在线观看免费高清| 欧美特黄级在线| 亚洲成人三级在线| 亚洲国产小视频在线观看| 亚洲国产欧美在线成人app| 欧美在线视频观看免费网站| 欧美日韩国产精品专区| 亚洲欧洲在线看| 91chinesevideo永久地址| 久久人人爽人人爽人人片av高请| 日韩欧美成人网| 日韩在线观看高清| 成人久久久久爱| 日韩av资源在线播放| 超碰精品一区二区三区乱码| 精品国产欧美成人夜夜嗨| 久久99久久久久久久噜噜| 欧美成人一区二区三区电影| www.欧美三级电影.com| 亚洲精品电影久久久| 亚洲一区亚洲二区亚洲三区| 亚洲伊人第一页| 国产精品久久久久久久av大片| 一色桃子一区二区| 国产精品精品视频一区二区三区| 国产香蕉一区二区三区在线视频| 久久在线免费观看视频| 国产精品久久色| 亚洲国内精品视频| 久久久久久噜噜噜久久久精品| 亚洲欧美在线播放| 国产精品青草久久久久福利99| 亚洲欧美一区二区三区在线| 国产精品678| 精品久久久久久中文字幕大豆网| 青青草一区二区| 亚州欧美日韩中文视频| 欧美成人免费全部| 国产亚洲一区精品| 日韩美女福利视频| 免费99精品国产自在在线| 78m国产成人精品视频| 亚洲欧美制服综合另类| 亚洲精品美女在线观看播放| 日韩在线观看免费av| 日韩在线观看免费高清| 97国产真实伦对白精彩视频8| 亚洲国产一区二区三区在线观看| 欧美日韩国产一区中文午夜| 亚洲精品久久久久中文字幕二区| 日韩高清免费在线| 久久久久日韩精品久久久男男| 国产精品日本精品| 久久91精品国产| 97成人精品区在线播放| 国产精品久久久久久搜索| 久久99精品久久久久久噜噜| 一区二区在线视频播放| 国产成人免费av电影| 欧美xxxx做受欧美.88| 欧美裸体男粗大视频在线观看| 97国产在线观看| 日韩av电影在线免费播放| 色综合久久中文字幕综合网小说| 日韩va亚洲va欧洲va国产| 91在线看www| 亚洲福利在线视频| 亚洲欧美制服综合另类| 北条麻妃一区二区三区中文字幕| 亚洲男人天堂九九视频| 久久久视频免费观看| 亚洲欧洲xxxx| 美日韩精品免费观看视频| 在线视频国产日韩| 欧美插天视频在线播放| 亚洲国模精品私拍| 91免费精品视频| 狠狠久久五月精品中文字幕| 日韩a**站在线观看| 国产日韩精品电影| 国内免费久久久久久久久久久| 国产精品91一区| 精品国产精品自拍| 国内揄拍国内精品| 国产精品成人v| 91系列在线播放| 国产亚洲精品久久久优势| 久久频这里精品99香蕉| 久久久久久网站| 成人网页在线免费观看| 日韩激情av在线免费观看| 91亚洲国产成人久久精品网站| 亚洲欧美制服第一页| 丝袜美腿亚洲一区二区| 亚洲精品视频免费在线观看| 国产亚洲成av人片在线观看桃| 热re99久久精品国产66热| 这里只有精品在线播放| 成人久久一区二区三区| 国产精品黄色av| 国语对白做受69| 91tv亚洲精品香蕉国产一区7ujn| 国产成人精品电影久久久| 狠狠做深爱婷婷久久综合一区| 亚洲美女黄色片| 国产精品偷伦视频免费观看国产| 成人久久一区二区| 亚洲国产成人在线视频| 欧美成人精品一区| 91精品久久久久久久久久久| 欧美成人高清视频| 国产成人精品视频在线观看| 91精品久久久久久久久久久久久久| 久久久久久一区二区三区| 日韩欧美亚洲一二三区| 91久久综合亚洲鲁鲁五月天|