Как правильно использовать SimpleAsynctaskexeCutor, когда ему необходимо ждать, пока все виртуальные потоки будут закончены? Этот concurrenthashmap содержит данные, которые затем используются для отправки по электронной почте пользователям. Как только они все закончат свою работу, я хочу последовательно отправлять электронные письма. job. Я хочу ждать, пока все виртуальные
потоки (VT) завершится перед отправкой электронных писем с данными. причинить мне проблемы? Я хочу, чтобы только 4 потока работали одновременно, в то время как другие ждут, пока будут запускать «свободные слоты». Могу ли я добавить более 4 Callables, или я должен добавить их в качестве других виртуальных потоков?@Component
@Configuration
public class NotificacoesListener {
...
private ExecutorCompletionService getTaskExecutor() {
SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor();
taskExecutor.setVirtualThreads(true);
taskExecutor.setConcurrencyLimit(4);
ExecutorCompletionService executorCompletionService = new ExecutorCompletionService(taskExecutor);
return executorCompletionService;
}
...
@Scheduled(cron = MySettings.NOTIFICATION_SUB_SYSTEM_EVERY_NIGHT, zone = "GMT-3:00")
@Transactional
public void start() {
System.out.println("Starting at " + Utils.formatDate(LocalDate.now()) + " ...");
...
ConcurrentHashMap map = new ConcurrentHashMap();
ExecutorCompletionService executorCompletionService = getTaskExecutor();
int virtualThreadsRunning = 0;
//
for (Verifica instancia : instancias) {
virtualThreadsRunning++;
executorCompletionService.submit(new Callable() {
@Override
public Object call() throws Exception {
instancia.verifica(tenants, map);
return true;
}
});
}
while (virtualThreadsRunning > 0) {
try {
executorCompletionService.take();
} catch (InterruptedException ex) {
ex.printStackTrace();
} finally {
virtualThreadsRunning--;
}
}
sendEmails(map);
System.out.println("END");
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... r-all-virt
Как правильно использовать SimpleAsynctaskexecutor, когда нужно ждать, пока все виртуальные потоки закончится? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
SQLite3 Async Queries ждать, пока тяжелые вызовы API закончится, чтобы выполнить
Anonymous » » в форуме Python - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Виртуальные потоки Java 21, похоже, блокируют потоки несущей при вызове внешней службы
Anonymous » » в форуме JAVA - 0 Ответы
- 101 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Кажется, что виртуальные потоки блокируют потоки несущей при вызове внешней службы.
Anonymous » » в форуме JAVA - 0 Ответы
- 66 Просмотры
-
Последнее сообщение Anonymous
-