Как избежать этой занятой петли? - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь оптимизировать операцию сканирования в 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
    }

Есть занятый цикл, ожидающий, что обслуживание прекращено. Как я могу избежать этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...