У меня есть класс SomeService
. Его методы могут быть вызваны из различных потоков (например, из RestController).
Этот класс содержит ExecutorService
и некоторые CustomClass
.
public class SomeService {
private ExecutorService service;
private CustomClass customClass;
public SomeService(ExecutorService service, CustomClass customClass){
this.service = service;
this.customClass = customClass;
}
public void servicePost() {
CountDownLatch countDownLatch = new CountDownLatch(urls.size());
for (String url : List<String> urls){
service.submit(() -> {
customClass.send(url);
countDownLatch.countDown();
});
}
countDownLatch.await();
}
}
Я хочу выполнить customClass.send(url)
параллельно в разных потоках, используя ExecutorService
, но этот метод может выдать RuntimeException
.
Например, я представил 5 заданий:
1. 2 задачи успешно выполнены
2. 2 задачи выполняются.
3. один из них выбрасывает RuntimeException.
Как прервать запущенные задачи?
p.s . ExecutorService может иметь задачи из других потоков. Я не хочу их прерывать.