1import{_ as i,c as a,b as n,o as l}from"./app-CNefOTx1.js";const h={};function k(e,s){return l(),a("div",null,s[0]||(s[0]=[n(`<h2 id="_5-2-å¯¹è±¡æ± " tabindex="-1"><a class="header-anchor" href="#_5-2-å¯¹è±¡æ± "><span>5.2 å¯¹è±¡æ± </span></a></h2><p>å¨ä¸ææå°çéé级对象ç¹å¾æ¯æé 夿ï¼å¨ä½¿ç¨æ¤å¯¹è±¡è¿ç¨ä¸ï¼å¯¹è±¡ä¼ç¼åä¸é´å¤çè¿ç¨ï¼å¦JacksonçObjectMapperï¼BeetlçGroupTemplateï¼è¿æGsonåºååå·¥å ·ççï¼è¿æä¸ç±»ééçº§å¯¹è±¡åæ¯ç½ç»ç¸å ³ç客æ·ç«¯å¯¹è±¡ï¼å¦æ°æ®åºè¿æ¥æ± ï¼ä»¥åRedis客æ·ç«¯Jedis使ç¨JedisPoolï¼è¿ç±»æ¯éé级å«å¯¹è±¡åå æ¯å»ºç«ç½ç»é¾æ¥æ¯éå¸¸èæ¶çæä½ï¼åºç¨å¸æä¸æ¦å»ºç«åï¼å°±ä¼ä¿ææ¤é¾æ¥ãè¿æ¶åï¼å°±éè¦ä½¿ç¨æ± åææ¯ãæ± åææ¯æä¾äºå¯¹è±¡éç¨æºå¶</p><p>ä½¿ç¨æ± åææ¯å¦å¤ä¸ä¸ªåå æ¯åå°å¯¹è±¡çå建个æ°ï¼æ»æ¯å¤ç¨ä¹åå建ç对象ï¼ä»èåå°åå¾åæ¶æ¶é´</p><p>ç°å¨æä¸ä¸ªå¯¹è±¡é¾æ¥Redisï¼å®ä¹å¦ä¸</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 2<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> String</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 3<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 4<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 5<span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> this</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 6<span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> this</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 7<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 8<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> connect</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 9<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> System</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">out</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">println</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">connect redis </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 10<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 11<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 12<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> close</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 13<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> System</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">out</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">println</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">close </span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 14<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 15<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>connectæ¹æ³å°ä¼é¾æ¥Redis æå¡å¨ï¼closeæ¹æ³åä¼ç®¡ç龿¥ï¼ä¸ºäºç®åæé´ï¼çç¥äºsocket龿¥ä»£ç ï¼RedisClientæ¯ä¸ä¸ªéé级对象ï¼å¯ä»¥ä½¿ç¨ä½¿ç¨Apache Commons Poolæ¥å®ç°å¯¹è±¡æ± åï¼Commons Poolæä¾äº<strong>BasePooledObjectFactory</strong> å¯ä»¥æ¹ä¾¿çå建å管ç对象ï¼å¦ä¸å®ä¹</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> RedisClientPooledObjectFactory</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> extends</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> BasePooledObjectFactory</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 16<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> String</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 17<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">
17 port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 18<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> RedisClientPooledObjectFactory</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 19<span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> this</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 20<span class="line"><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> this</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 21<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 22<span class="line"></span> 23<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Override</span></span> 24<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">create</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> throws</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Exception </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
24{</span></span> 25<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 26<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">connect</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 27<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 28<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 29<span class="line"></span> 30<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Override</span></span> 31<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> PooledObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> wrap</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">RedisClient </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 32<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> DefaultPooledObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">>(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 33<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 34<span class="line"></span> 35<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> @</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Override</span></span> 36<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> destroyObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">PooledObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> p</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> throws</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Exception</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
36{</span></span> 37<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> p</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 38<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">close</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 39<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 40<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>é常éè¦å®ç°createæ¹æ³ï¼ç¨äºå建éé级对象ï¼wrapæ¹æ³ç¨äºå¯¹è±¡æ± 管çï¼å¯¹è±¡æ± ä¸ç´æ¥ç®¡çæä»¬å建ç对象ï¼èæ¯ç®¡çPooledObjectï¼å¯ä»¥ç¨DefaultPooledObjectæé ä¸ä¸ªé»è®¤å®ç°ãdestroyObjectæ¹æ³ç¨äºå¯¹è±¡æ± éæ¯çæ¶åï¼å ³ééé级对象</p><p>æäºRedisClientPooledObjectFactoryï¼å°±å¯ä»¥æé GenericObjectPoolï¼</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> RedisClientPoolUtil</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 41<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> GenericObjectPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">RedisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> genericObjectPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 42<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> init</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">String </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> max</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 43<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> GenericObjectPoolConfig</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> config</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> GenericObjectPoolConfig</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 44<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> config</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">setMaxTotal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">max</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 45<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> genericObjectPool </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> GenericObjectPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> RedisClientPooledObjectFactory</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">ip</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">port</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">),</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">config</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 46<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 47<span class="line"></span> 48<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getOne</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> throws</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Exception </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
48{</span></span> 49<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> genericObjectPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">borrowObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 50<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 51<span class="line"></span> 52<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> returnObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">RedisClient </span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;">redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 53<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> genericObjectPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">returnObject</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">redisClient</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 54<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 55<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>å¦ä¸ä»£ç æé äºæå¤æé 5个RedisClientçå¯¹è±¡æ± ï¼å¹¶å°è£ äºgetOneæ¹æ³ç¨äºä»æ± éååºä¸ä¸ªæªä½¿ç¨çRedisClientï¼returnObjectï¼æRedisClientå½è¿å°æ± éï¼å¦ä¸ä»£ç æµè¯</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> PoolTest</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span> 56<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClientPoolUtil</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> RedisClientPoolUtil</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 57<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
57{</span></span> 58<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">init</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;">127.0.0.1</span><span style="--shiki-light:#B5695977;--shiki-dark:#C98A7D77;">"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">9090</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">,</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">3</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 59<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 60<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> main</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">String</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> args</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> throws</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Exception </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
60{</span></span> 61<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient1</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getOne</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 62<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getOne</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 63<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient3</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getOne</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 64<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> //ä¼é»å¡ä½ï¼å 为æ»å ±å建äº3个</span></span> 65<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> RedisClient</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> redisClient4</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> util</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getOne</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 66<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 67<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>é¤äºä½¿ç¨Common Poolææ¯å¤ï¼è¿ææ´ä¸ºç®åçæ± åææ¯ãæ¯å¦ç¨éåæ¾å ¥å·²ç»åå§å好ç对象ãéè¦çæ¶åä»éåéååºï¼ä½¿ç¨å®æ¯æ¾åéåãå¦å¤ä¸ä¸ªæ´ä¸ºç®åçæ¹å¼æ¯ä½¿ç¨ThreadLocalæ¥åæ¾åå§å好ç对象ãåå®éè¦æ± å对象æ¯è¦ç»å符æ°ç»ï¼ä½¿ç¨éåæ¹å¼</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">/*å®ä¹ä¸ä¸ªéè¦éç¨å¾å¯¹è±¡*/</span></span> 68<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
68{</span></span> 69<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> char</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> cs</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 70<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> size</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 71<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> cs </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> char</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">size</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">];</span></span> 72<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 73<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> char</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">[]</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> getContent</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 74<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> cs</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 75<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 76<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>使ç¨éåæ¹å¼</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> BufferPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
76{</span></span> 77<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> prvate </span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> BufferPool</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> pool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> BufferPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 78<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ArrayBlockingQueue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> queue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ;</span></span> 79<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> private</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> BufferPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 80<span class="line"><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> init</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 81<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 82<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> /*åå§åbuffer*/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 83<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> private</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> init</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 84<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> queue </span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ArrayBlockingQueue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><>(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">64</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 85<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> for</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">int</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> i</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">=</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">0</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">i</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"><</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">64</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">i</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">++</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 86<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> queue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">put</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1024</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 87<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> }</span></span> 88<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> }</span></span> 89<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> /*éç¨å便¨¡å¼*/</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 90<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> BufferPool </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">instance</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 91<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> this</span></span> 92<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 93<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Buffer </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getBuffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 94<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> queue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">take</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span></span> 95<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 96<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> release</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Buffer buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">){</span></span> 97<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> queue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">put</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 98<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 99<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> /*æ¸ ç©ºæ± */</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 100<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> void</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> close</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 101<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> queue</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">clear</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span></span> 102<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 103<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>使ç¨ThreadLocalæ¹å¼å¦ä¸</p><div class="language-plaintext line-numbers-mode" data-ext="plaintext" data-title="plaintext"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>public class BufferPool{</span></span> 104<span class="line"><span> static ThreadLocal<Buffer cache = ThreadLocal.withInitial((Supplier) () - new Buffer(1024));</span></span> 105<span class="line"><span> public static Buffer getBuffer(){return cache.take()}}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>使ç¨éåæ¹å¼å¾ä¼ç¹æ¯å¯ä»¥æä¾æ©å®¹âæ± âåè½ï¼ç¼©å®¹æ± ï¼çè³éæ¾æ± çåè½ãç¼ºç¹æ¯ä½¿ç¨å®æ¯å¿ é¡»å½è¿ï¼å æ¤è°ç¨ä»£ç åºè¯¥å¦ä¸æ¹å¼</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> BufferPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
105{</span></span> 106<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ThreadLocal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> cache</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ThreadLocal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">withInitial</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">((</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Supplier</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ()</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> -></span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1024</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">));</span></span> 107<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Buffer </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getBuffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 108<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> cache</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">take</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">()</span></span> 109<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 110<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>使ç¨ThreadLocalçç¼ºç¹æ¯æ± ç容é大å°ä¾èµäºçº¿ç¨æ°ï¼æ± çç容鿝å¦å¯æ§ï¼åå³äºè°ç¨æ¶åççº¿ç¨æ°ï¼å ¶å建å鿝ä¾èµäºçº¿ç¨ççå½å¨æ</p><p>ThreadLocal ä¸å ·å¤å¨æè°æ´æ± 大å°åè½ï¼ä¾èµçº¿ç¨æ°å¤§å°ï¼å¦ææ å¿å åæº¢åºï¼å¯ä»¥ä½¿ç¨SoftReference</p><div class="language-java line-numbers-mode" data-ext="java" data-title="java"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> class</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> BufferPool</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
110{</span></span> 111<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> ThreadLocal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">SoftReference</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">>></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> cache</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> ThreadLocal</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">withInitial</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">((</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">Supplier</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ()</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> -></span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 112<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> SoftReference</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> (</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1024</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)));</span></span> 113<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 114<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> public</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;"> static</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Buffer </span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">getBuffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(){</span></span> 115<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> SoftReference</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"><</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">></span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> srf</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> cache</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">take</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 116<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Buffer</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> srf</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">get</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">();</span></span> 117<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> //夿æ¯å¦è¢«åå¾åæ¶</span></span> 118<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> if</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">buffer</span><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">!=</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">null</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">}</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">
118{</span></span> 119<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span> 120<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;"> }</span></span> 121<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> //妿忶äºï¼éæ°æé ä¸ä¸ª </span></span> 122<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> Buffer</span><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> =</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> new</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;"> Buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#2F798A;--shiki-dark:#4C9A91;">1024</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">)</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> ;</span></span> 123<span class="line"><span style="--shiki-light:#B07D48;--shiki-dark:#BD976A;"> srf</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">.</span><span style="--shiki-light:#59873A;--shiki-dark:#80A665;">set</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">(</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">);</span></span> 124<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> return</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> buffer</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> </span></span> 125<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> }</span></span> 126<span class="line"><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,23)]))}const p=i(h,[["render",k],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/article/performance/policy_pool/","title":"æ§è½ä¼å-å¯¹è±¡æ± ","lang":"en-US","frontmatter":{"title":"æ§è½ä¼å-å¯¹è±¡æ± ","tags":["æ§è½","æ°ä¹¦"],"createTime":"2026/08/21 12:36:15","permalink":"/article/performance/policy_pool/","description":"5.2 å¯¹è±¡æ± å¨ä¸ææå°çéé级对象ç¹å¾æ¯æé 夿ï¼å¨ä½¿ç¨æ¤å¯¹è±¡è¿ç¨ä¸ï¼å¯¹è±¡ä¼ç¼åä¸é´å¤çè¿ç¨ï¼å¦JacksonçObjectMapperï¼BeetlçGroupTemplateï¼è¿æGsonåºååå·¥å ·ççï¼è¿æä¸ç±»ééçº§å¯¹è±¡åæ¯ç½ç»ç¸å ³ç客æ·ç«¯å¯¹è±¡ï¼å¦æ°æ®åºè¿æ¥æ± ï¼ä»¥åRedis客æ·ç«¯Jedis使ç¨JedisPoolï¼è¿ç±»æ¯éé级å«å¯¹è±¡åå æ¯å»ºç«ç½...","head":[["meta",{"property":"og:url","content":"http://ibeetl.com/article/performance/policy_pool/"}],["meta",{"property":"og:site_name","content":"é²å¤§èµ"}],["meta",{"property":"og:title","content":"æ§è½ä¼å-å¯¹è±¡æ± "}],["meta",{"property":"og:description","content":"5.2 å¯¹è±¡æ± å¨ä¸ææå°çéé级对象ç¹å¾æ¯æé 夿ï¼å¨ä½¿ç¨æ¤å¯¹è±¡è¿ç¨ä¸ï¼å¯¹è±¡ä¼ç¼åä¸é´å¤çè¿ç¨ï¼å¦JacksonçObjectMapperï¼BeetlçGroupTemplateï¼è¿æGsonåºååå·¥å ·ççï¼è¿æä¸ç±»ééçº§å¯¹è±¡åæ¯ç½ç»ç¸å ³ç客æ·ç«¯å¯¹è±¡ï¼å¦æ°æ®åºè¿æ¥æ± ï¼ä»¥åRedis客æ·ç«¯Jedis使ç¨JedisPoolï¼è¿ç±»æ¯éé级å«å¯¹è±¡åå æ¯å»ºç«ç½..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-08-21T06:57:39.000Z"}],["meta",{"property":"article:tag","content":"æ§è½"}],["meta",{"property":"article:tag","content":"æ°ä¹¦"}],["meta",{"property":"article:modified_time","content":"2026-08-21T06:57:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"æ§è½ä¼å-å¯¹è±¡æ± \\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"202
1266-08-21T06:57:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"readingTime":{"minutes":3.7,"words":1109},"git":{"updatedTime":1787295459000,"contributors":[{"name":"lijiazhi","username":"lijiazhi","email":"[email protected]","commits":1,"avatar":"https://gravatar.com/avatar/1b5114831459724ad4acc394423b4b48ecfa4a7e0659fbe07a0ce5181a1050a7?d=retro"}]},"autoDesc":true,"filePathRelative":"article/æ§è½/object_pool.md","categoryList":[{"id":"92a2b5","sort":10000,"name":"article"},{"id":"afdb50","sort":10004,"name":"æ§è½"}]}');export{p as comp,d as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.