Как остановить расписание ScheduledExecutorService

Я использую ScheduledExecutorService и инициализирую его (ScheduledExecutorService ScheduleThreadPool = Executors.newScheduledThreadPool(20);) через одноэлементный класс, чтобы не создавать каждый раз новые потоки. Затем я планирую свою задачу, используя расписание "executorService.schedule(new Runnable(), 20, TimeUnit.SECONDS);

У меня есть 2 вопроса по этому поводу: 1. Как закрыть поток после завершения его работы. Если я пытаюсь вызвать метод завершения работы после первого выполнения, я получаю ошибку java.util.concurrent.RejectedExecutionException (поскольку основной исполнитель выключен). 2. Как через какое-то время отменить продолжительный поток? Скажем, если запрос отправлен, а поток застрял в выполнении, как мне отменить его через некоторое время.


person Mohit224    schedule 01.12.2017    source источник


Ответы (1)


Лучший способ завершить ваш длинный поток — вернуться из функции Runnable#run. Любые попытки прервать или отменить не всегда могут сработать.

person Gunther Schadow    schedule 15.11.2018