读书人

【memcached】initialize是不是一个有

发布时间: 2012-10-24 14:15:58 作者: rapoo

【memcached】initialize是不是一个问题?

版本:gwhalin-Memcached-Java-Client-release_2.6.1-0-gab2cc7e

?

在memcached使用中:

?

static {String[] serverlist = { "cache0.server.com:12345", "cache1.server.com:12345" };SockIOPool pool = SockIOPool.getInstance();pool.setServers(serverlist);pool.initialize();}
?

最后需要对pool进行initialize();其实就是调用的SchoonerSockIOPool的initialize:

?

public void initialize() {schoonerSockIOPool.initialize();}
?

而在SchoonerSockIOPool初始化中,

?

public void initialize() {initDeadLock.lock();try {// if servers is not set, or it empty, then// throw a runtime exceptionif (servers == null || servers.length <= 0) {log.error("++++ trying to initialize with no servers");throw new IllegalStateException("++++ trying to initialize with no servers");}// poolssocketPool = new HashMap<String, GenericObjectPool>(servers.length);hostDead = new ConcurrentHashMap<String, Date>();hostDeadDur = new ConcurrentHashMap<String, Long>();// only create up to maxCreate connections at once// initalize our internal hashing structuresif (this.hashingAlg == CONSISTENT_HASH)populateConsistentBuckets();elsepopulateBuckets();// mark pool as initializedthis.initialized = true;} finally {initDeadLock.unlock();}}
?

在初始化最后设置了this.initialized = true

?

如果拿到的是同一个SchoonerSockIOPool,就会又一次初始化,这个算不算一个bug?

?

--------------------

?

在自己编程序的时候,把pool的设置集中在一个地方,只进行一次,这样应该就不会有什么问题了。

?

下面就是在MemCachedClient 中,使用这些Pool了

?

?

?

?

?

读书人网 >其他相关

热点推荐