Я пытаюсь оптимизировать операцию сканирования в Redis. Для этого я порождаю по одному потоку на узел и выполняю операцию сканирования на каждом узле.
Это код
private Map<String, String> clusterScan(JedisCluster jc)
{
Map<String, String> valuesMap = new ConcurrentHashMap<>();
ExecutorService service = Executors.newFixedThreadPool(jc.getClusterNodes().size());
for (Map.Entry<String, JedisPool> nodeEntry : jc.getClusterNodes().entrySet())
{
service.submit(build(nodeEntry.getKey(), nodeEntry.getValue(), valuesMap));
}
service.shutdown();
while(!service.isTerminated()) {}
return valuesMap();
}
private Runnable build(String nodeName, JedisPool nodePool, Map<String, String> valuesMap)
{
// Runnable to update the Map per node
}
Есть занятый цикл, ожидающий, что обслуживание прекращено. Как я могу избежать этого?