как заставить основной поток ждать завершения другого в Java?

Я придумал следующий поток «ореол», чтобы он подключался к БД (в данном случае Redis), и в случае сбоя сервера подождал бы секунду и повторил попытку. В моем классе модульного тестирования метод выполняется, и вскоре после запуска нового потока сервер выйдет из строя. Но затем этот новый поток «гало» немедленно закрывается. Что я делаю не так?

// almost infinitely large number of sets, interrupted by server seg-fault
    // you gotta try company methods 
    Thread halo = new Thread(new Runnable() {
        @Override
        public void run() {
            int count = 0;
            while (count < Integer.MAX_VALUE) {
                if (JedisPoolFactory.getStatus()) {
                    try {
                        for (int i = 0; i < 10000; i++) {
                            master.set(String.format("key_%d", count), String.format("value_%d", count));
                            System.out.println(master.get(String.format("key_%d", count)));
                            count++;
                        }
                    } catch (JedisConnectionException igr) {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException ignore) {}
                    }
                } else {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ignrod) {}
                }
            }
        }
    });
    halo.start();

    try {
        master.debug(DebugParams.SEGFAULT());
        halo.join();
    } catch (JedisConnectionException ignored) {
    } catch (InterruptedException igr) {}

person Joe Jung    schedule 05.08.2015    source источник
comment
мастер - это экземпляр джедая   -  person Joe Jung    schedule 06.08.2015
comment
Synchronization   -  person Shreyas Chavan    schedule 06.08.2015
comment
пожалуйста, уточните @ShreyasChavan   -  person Joe Jung    schedule 06.08.2015
comment
использование halo.join() заставит текущий поток ждать завершения обработки halo потока, не так ли?   -  person Joe Jung    schedule 06.08.2015
comment
синхронизация потоков - это когда потоки совместно используют ресурсы, так что вы имеете в виду синхронизацию для мастера экземпляра Jedis?   -  person Joe Jung    schedule 06.08.2015
comment
Перехватывает ли основной поток JedisConnectionException или InterruptedException, когда он действительно работает?   -  person user253751    schedule 06.08.2015
comment
на самом деле никакого исключения, ореол потока просто заканчивается, ничего не печатая.   -  person Joe Jung    schedule 06.08.2015


Ответы (1)


объединение потоков должно выполняться вне исключений, когда мастер переходит в состояние segfault, он вызывает исключение jedisconnectionexception.

person Joe Jung    schedule 05.08.2015