Скажем, у меня есть метод, который принимает параметр и возвращает Mono<Integer>
, который завершается асинхронно.Например:
Random random = new Random();
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(16);
Mono<Integer> fetch(String a) {
return Mono.create(em -> {
scheduledExecutorService.schedule(() -> em.next(a + " result"),
10 + random.nextInt(50), TimeUnit.MILLISECONDS);
});
}
Скажем, у меня есть Flux<String>
, который я могу использовать в методе fetch
, описанном выше, и который может содержать много элементов.
Есть ли способ, которым я могуМожно ли гарантировать, что метод вызывается параллельно, но ограничить количество одновременных вызовов заранее определенным номером?
Например, 4 в приведенном выше примере, в то время как у меня есть 16 доступных потоков - так что я всегда оставляю 12 запасных от этогоперспектива.