¿Qué es flux en Java?

| Última modificación: 24 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Flux en Java es un concepto que forma parte de la programación reactiva, un paradigma que nos ayuda a construir aplicaciones web y sistemas con alta concurrencia y asincronía. El día de hoy queremos explicarte más detalladamente qué es flux en java y cómo se utiliza.

flux en Java

¿Qué es flux en Java?

El término de flux en java está muy relacionado con Reactor, una biblioteca presente en la programación reactiva que hace posible el manejo de flujos de datos asíncronos. Dentro de este contexto, flux es un tipo de publisher que tiene la capacidad de emitir 0 o más elementos, mientras que su contraparte, Mono, solo emite uno o ningún elemento. Esta es una de las principales ventajas de trabjaar con flux en Java, que te permite manejar grandes cantidades de datos sin bloquear hilos, lo cual es muy importante en aplicaciones escalables.

Programación reactiva: ¿por qué es importante?

La programación reactiva, como su nombre lo indica, consiste en responder a los eventos a medida que estos ocurren, en lugar de esperar a que una tarea se complete para comenzar otra. Esto permite la construcción de aplicaciones más rápidas y escalables, al mismo tiempo que evita que los hilos se bloqueen mientras esperan resultados de tareas largas, ya sean solicitudes de bases de datos o servicios externos.

Flux en Java dentro de este paradigma nos hace posible el procesamiento dem últiples elementos de forma asíncrona.

Un ejemplo del funcionamiento de flux en Java

Si quieres empezar a trabajar con flux en java necesitarás la librería Reactor. Uno de los usos que tiene flux en Java es en aplicaciones que requeiren procesar varios elementos de manera no bloqueante. Veamos: imagina que tienes una lista de números y quieres emitir cada número, uno por uno, de forma asíncrona. Con flux en Java esto lo haríamos del siguiente modo:

import reactor.core.publisher.Flux;

public class EjemploFlux {
public static void main(String[] args) {
Flux<Integer> numeros = Flux.just(1, 2, 3, 4, 5);
numeros.subscribe(System.out::println);
}
}
  • En este ejemplo creamos un Flux que emite una lista de números del 1 al 5. Luego usamos el método subscribe() para consumir esos valores y los imprimimos en la consola.

Operaciones con flux en Java

Uno de los mayores beneficios de flux en Java es la gran cantidad de operaciones que puedes realizar sobre los flujos de datos. Algunas de las más útiles son:

  • map( ): Transforma cada elemento emitido por el flux. Por ejemplo, si quisieras multiplicar cada número de la secuencia anterior por 2, podrías usar el operador map():
Flux<Integer> numeros = Flux.just(1, 2, 3, 4, 5)
.map(n -> n * 2);
numeros.subscribe(System.out::println);
  • filter( ): Permite filtrar elementos basados en una condición. Por ejemplo, puedes filtrar solo los números pares de un flux:
Flux<Integer> numeros = Flux.just(1, 2, 3, 4, 5)
.filter(n -> n % 2 == 0);
numeros.subscribe(System.out::println);
  • merge( ): Si tienes varios fluxes y deseas combinarlos en uno solo, puedes usar merge(). Esto te permite procesar datos provenientes de diferentes fuentes:
Flux<Integer> flux1 = Flux.just(1, 2, 3);
Flux<Integer> flux2 = Flux.just(4, 5, 6);
Flux<Integer> combinado = Flux.merge(flux1, flux2);
combinado.subscribe(System.out::println);

Flux vs Mono: ¿cuál es la diferencia?

Ambos, tanto mono como flux en Java, son tipos de publishers en Reactor, pero sus roles varían un tanto. Aquí algunas diferencias, a modo de resumen:

  1. Flux: Emite de 0 a N elementos, lo que lo convierte en una excelente opción cuando tienes que manejar listas o flujos continuos de datos.
  2. Mono: Emite un solo elemento o ninguno. Es ideal para tareas que devuelven un único resultado, como una consulta a una base de datos que espera solo un valor.

Ahora que tienes claro este tema y la diferencia entre flux y mono, ¿qué te parece si sigues instruyéndote en el área de la programación? Para ello tenemos el bootcamp de java, con el cual aprenderás esta ymuchísimas otras temáticas relacionadas con este lenguaje de programación. ¡Inscríbete ahora y recibe excelentes beneficios!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado