From e4441ec5b327fad913a206224ee97da8cfe86efb Mon Sep 17 00:00:00 2001 From: Jungtaek Lim Date: Sat, 13 Sep 2014 10:54:48 +0900 Subject: [PATCH] use ThreadLocal instead of creating Random each time * We can't use ThreadLocalRandom because we need to support JDK6 --- .../redis/clients/jedis/JedisClusterConnectionHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java b/src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java index 288d477..7fe4ebd 100644 --- a/src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java +++ b/src/main/java/redis/clients/jedis/JedisClusterConnectionHandler.java @@ -11,6 +11,7 @@ import static redis.clients.jedis.JedisClusterInfoCache.getNodeKey; public abstract class JedisClusterConnectionHandler { protected final JedisClusterInfoCache cache; + private ThreadLocal random = new ThreadLocal(); abstract Jedis getConnection(); @@ -27,7 +28,8 @@ public abstract class JedisClusterConnectionHandler { abstract Jedis getConnectionFromSlot(int slot); public JedisClusterConnectionHandler(Set nodes, final GenericObjectPoolConfig poolConfig) { - this.cache = new JedisClusterInfoCache(poolConfig); + this.cache = new JedisClusterInfoCache(poolConfig); + this.random.set(new Random()); initializeSlotsCache(nodes, poolConfig); } @@ -80,7 +82,7 @@ public abstract class JedisClusterConnectionHandler { protected JedisPool getRandomConnection() { Object[] nodeArray = cache.getNodes().values().toArray(); - return (JedisPool) (nodeArray[new Random().nextInt(nodeArray.length)]); + return (JedisPool) (nodeArray[this.random.get().nextInt(nodeArray.length)]); } }