Acelerar Mono asíncrono por número de tareas concurrentes (no basadas en tiempo)

Digamos que tengo un método que toma un parámetro y devuelve uno Mono<Integer>que se completa asincrónicamente. Por ejemplo:

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);
  });
}

Digamos que tengo una Flux<String>que puedo alimentar en el fetchmétodo anterior y que puede tener muchos elementos.

¿Hay alguna manera de asegurarme de que el método se llame en paralelo, pero limite el número de llamadas simultáneas a un número predefinido?

Por ejemplo, 4 en el ejemplo anterior, aunque tengo 16 hilos disponibles, por lo que siempre tengo 12 de repuesto desde esta perspectiva.

Respuesta 1

Tengo una aplicación web que estaba intentando implementar en un servidor remoto de Windows 2003 con java6, tomcat6 y mysql5.5. Después de implementar la aplicación cuando llego a la url de la aplicación, me sigue ...

Contexto que intenta recuperar RetrieveAttributeChangeHistory de la entidad de auditoría de Dynamics 365. Necesito ayuda para formar la sintaxis adecuada para la función OData en esta entidad. Como la función no está consolidada, soy ...

Estoy creando mi primer programa de chat (con gráficos en Java) y estoy usando el generador de escenas JavaFx para crear una GUI que contiene algunas imágenes y luego 1 a 2 hombres que pueden chatear entre ellos. el ...

Ya he creado un módulo que es una extensión de axis2 y quiero que este módulo realice una operación simple como la adición, por ejemplo. ¿Qué debo hacer para interceptar el tratamiento del servicio web (...