Diferencia entre flujo paralelo y CompletableFuture

En el libro "Java 8 en acción" (de Urma, Fusco y Mycroft) destacan que las secuencias paralelas utilizan internamente el conjunto de unión de fork común y que si bien esto puede configurarse globalmente, por ejemplo, utilizando System.setProperty (...), que no es posible especificar un valor para una sola secuencia paralela.

Desde entonces, he visto la solución alternativa que implica ejecutar la secuencia paralela dentro de un ForkJoinPool personalizado.

Más adelante en el libro, tienen un capítulo entero dedicado a CompletableFuture, durante el cual tienen un estudio de caso en el que comparan el rendimiento respectivo del uso de unicoStream VS un CompletableFuture. Resulta que su rendimiento es muy similar: resaltan la razón de esto porque ambos son predeterminados utilizando el mismo grupo común (y, por lo tanto, la misma cantidad de subprocesos).

Continúan para mostrar una solución y argumentan que CompletableFuture es mejor en esta circunstancia, ya que se puede configurar para usar un Ejecutor personalizado, con un tamaño de grupo de hilos a elección del usuario. Cuando actualizan la solución para utilizar esto, el rendimiento mejora significativamente.

Esto me hizo pensar: si uno hiciera lo mismo para la versión de flujo paralelo utilizando la solución destacada anteriormente, ¿los beneficios de rendimiento serían similares y, por lo tanto, los dos enfoques volverían a ser similares en términos de rendimiento? En este caso, ¿por qué elegiría el CompletableFuture sobre la secuencia paralela cuando claramente requiere más trabajo por parte del desarrollador?

Respuesta 1

Estoy usando el servidor Neo4j en mi aplicación, comenzando el gráfico incrustado db con el servidor REST. Ahora el artefacto neo4j-server viene con logback.xml. También estoy usando logback para iniciar sesión => Obtengo 16: 17: 13,233 | -...

De acuerdo con Wikipedia: "En Java, los métodos Arrays.sort () usan la combinación de ordenación o una ordenación rápida ajustada dependiendo de los tipos de datos y para la eficiencia de implementación cambie a la ordenación por inserción cuando haya menos ...

Quiero saber si el uso de código específico de Java rompe o no la utilidad multiplataforma. Por ejemplo, ¿importa si uso Java ArrayList o Libgdx Array?

Quiero escribir un programa que simule lo siguiente: tengo 6 dados, y ruedo con algunos dados cada vez. Cuando no saco un dado, asumo que saqué un 0 con eso. Quiero enumerar ...