doShit(); // оч долго
updateRecord("completed");
}, executor);
так вот, почему-то updateRecord не выполняется 🤔
чем дольше doShit() - тем больше вероятность что не выполнится
в чём прикол, есть какой-то тайм-аут у таска и он тупо забивает на последние операции?
Либо 1. Ты самостоятельно выключаешь экзекьютор 2. В экзекьюторе даемон-треды, а ты выходишь из мейна и не наплодил других не-даемон тредов 3. https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html У тебя стреляет эксепшеном, а ты его не обрабатываешь в .handle() / .whenComplete() / etc.
блин, экзекьютор не выключаю, тред там один работает вообще, джоба одна запущена, а мейн работает, эксепшнов нет, doShit() нормально отрабатывает 🤔
А где многопоточка? Это же тупо executor.execute(). Если ваш код в лямбде начинает выполняться, проблема может быть только в нём.
так в этом то и вопрос, последовательный код выполняется как надо отсюда и подозрения на экзекьютор
Ну учитывая, что в джаве нельзя взять и прервать поток, если этот код уже начал выполняться, проблему надо искать в нём, экзекьютор тут не при чём. Если, конечно, приложение не завершается из-за отсутствия не-фоновых потоков.
Оберни в try catch throwable или заведи exception handler. У тебя вылетает исключение которое ты не видишь скорее всего
действительно, спасибо, чёт я тупанул смотрю что в редисе всё есть а там RedisConnectionFailureException выпал
Да, так бывает. Удачи )
Писал же, а в ответ "нормально отрабатывает" -_-
ахахах, да это было где-то в 3 ночи 😅
Обсуждают сегодня