话不多说,上代码:
def multiThreadInitialization(): Unit = {
var coreSize = Runtime.getRuntime.availableProcessors() + 1;
var threadPool:ExecutorService = Executors.newFixedThreadPool(coreSize);
// 这里为了处理JedisConnector初始化时间过长问题
val jedisCluster = JedisUtils.getJedisConnector();
val map = jedisCluster.hgetAll("feature_platform_redisConfig")
var countDownLatch = new CountDownLatch(map.size())
logger.info("获取集群数据: " + map.toString)
var startTime = System.currentTimeMillis()
map.asScala.foreach {
case (k, v) =>
threadPool.execute(new Runnable {
override def run(): Unit = {
val meta = new com.riemann.ai.data.feature.redis.RedisFeatureMeta[java.lang.String] (
new JedisClusterName(k, v),
"test{imei}",
"test{imei}",
"",
"test",
false,
SerializeType.STRING)
try {
val value = meta.get("0", "0")
logger.info(s"集群:${k} ${v} 初始化成功:" + value)
} catch {
case e: Exception =>
logger.error(e.getMessage)
logger.error(s"集群:${k} ${v} 初始化失败!!!")
} finally {
countDownLatch.countDown()
}
}
})
}
countDownLatch.await()
logger.info("集群初始化总耗时: " + (System.currentTimeMillis() - startTime))
}