Dominando CompletableFuture en Java: Casos de Uso y Ejemplos de Código

Aprende CompletableFuture en Java para programación asíncrona: conceptos, ejemplos, manejo de errores y combinación de tareas, con casos reales y aplicación en soluciones de Q2BSTUDIO.

25 sept 2025 • 4 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

En la programación asíncrona en Java CompletableFuture se ha convertido desde Java 8 en una de las APIs más potentes para gestionar tareas asíncronas con código limpio, fluido y no bloqueante. En este artículo revisaremos los conceptos básicos, ejemplos prácticos, manejo de errores, combinación de tareas y casos de uso reales, además de cómo Q2BSTUDIO aplica estas técnicas en soluciones de software a medida e inteligencia artificial.

Qué es CompletableFuture Un CompletableFuture representa el resultado futuro de un cálculo asíncrono. Se puede completar manualmente o ejecutar de forma asíncrona sobre un executor. Conceptos clave incluyen runAsync para tareas sin valor de retorno y supplyAsync para tareas que devuelven un resultado.

Ejemplo básico Ejemplo simplificado de ejecución asíncrona usando runAsync y espera con get: CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { Thread.sleep(1000); System.out.println(Task ejecutado en: + Thread.currentThread().getName()); }); future.get(); Nota clave runAsync ejecuta un Runnable sin retorno mientras supplyAsync ejecuta un Supplier con retorno.

Devolver resultados con supplyAsync Ejemplo simplificado: CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> { Thread.sleep(500); return Hello from + Thread.currentThread().getName(); }); System.out.println(future.get()); supplyAsync permite encadenar transformaciones sobre el resultado cuando esté listo.

Encadenamiento y consumo de resultados thenApply transforma el resultado y devuelve uno nuevo, thenAccept consume el resultado sin devolver nada y thenRun ejecuta una acción tras la finalización ignorando el resultado. Ejemplo: CompletableFuture.supplyAsync(() -> Data).thenApply(data -> data + processed).thenAccept(System.out::println).thenRun(() -> System.out.println(Pipeline finished));

Combinación de futuros thenCombine fusiona dos resultados cuando ambos están completos, y allOf permite esperar a múltiples tareas a la vez. Ejemplo thenCombine: future1 = CompletableFuture.supplyAsync(() -> Hello); future2 = CompletableFuture.supplyAsync(() -> World); combined = future1.thenCombine(future2, (a, b) -> a + + b); System.out.println(combined.get()); Ejemplo allOf: CompletableFuture.allOf(f1, f2, f3).join(); System.out.println(f1.get() + , + f2.get() + , + f3.get());

Manejo de excepciones exceptionally permite recuperar valores cuando ocurre una excepción, mientras que handle recibe tanto resultado como excepción y puede devolver una alternativa. Ejemplo simplificado exceptionally: CompletableFuture.supplyAsync(() -> { throw new RuntimeException(Something went wrong!); }).exceptionally(ex -> Recovered from: + ex.getMessage()); Ejemplo handle: CompletableFuture.supplyAsync(() -> { throw new RuntimeException(Error occurred!); }).handle((result, ex) -> { if (ex != null) return Fallback value; return result; });

Ejemplo real: obtener datos de múltiples APIs Imagina que necesitas consultar detalles de producto y precios de servicios diferentes en paralelo. Usando supplyAsync para cada consulta y luego thenCombine para unir resultados consigues acelerar la respuesta global. Ejemplo conceptual: productFuture = CompletableFuture.supplyAsync(() -> { sleep(1000); return Product details; }); priceFuture = CompletableFuture.supplyAsync(() -> { sleep(1500); return Price details; }); finalResult = productFuture.thenCombine(priceFuture, (product, price) -> product + + price); System.out.println(Final Result: + finalResult.get());

Cuándo usar CompletableFuture Es ideal para tareas I/O bound en paralelo como llamadas a APIs, consultas a bases de datos, pipelines de transformación y agregación de resultados de múltiples cómputos. No es la mejor opción para cómputos pesados puramente CPU bound donde es preferible ForkJoinPool o streams paralelos, ni para tareas extremadamente cortas donde la sobrecarga puede no compensar.

Buenas prácticas - Separar lógica de negocio y orquestación asíncrona. - Usar un ExecutorService personalizado cuando se gestionan muchos hilos o se requiere control de recursos. - Establecer timeouts razonables y manejo claro de cancelaciones. - Combinar thenCompose para dependencias secuenciales y thenCombine o allOf para paralelismo.

Casos avanzados Opciones útiles incluyen orTimeout para timeouts declarativos, manejo de cancelaciones, y uso de un ExecutorService propio para aislar cargas. Estas técnicas son relevantes cuando se construyen pipelines resilientes para microservicios y sistemas distribuidos.

Cómo aplica Q2BSTUDIO estas técnicas En Q2BSTUDIO desarrollamos soluciones de software a medida y aplicaciones a medida que integran arquitecturas reactivas y asíncronas para maximizar rendimiento y escalabilidad. Nuestra experiencia en inteligencia artificial, ciberseguridad y servicios cloud nos permite combinar CompletableFuture con servicios en AWS y Azure y con soluciones de inteligencia de negocio como Power BI para ofrecer productos completos y seguros. Si buscas una solución de desarrollo de aplicaciones a medida conoce nuestra propuesta en desarrollo de aplicaciones y software multilateral y si te interesa incorporar IA en tus procesos visita nuestros servicios de inteligencia artificial.

Palabras clave y posicionamiento Este artículo incluye términos estratégicos para mejorar visibilidad en búsquedas relacionadas con aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi, todos alineados con los servicios que ofrece Q2BSTUDIO.

Conclusión CompletableFuture simplifica la programación asíncrona en Java permitiendo código más legible, componible y robusto gracias a su encadenamiento fluido y manejo integrado de errores. Usando patrones como thenCombine, allOf y exceptionally puedes construir pipelines eficientes y no bloqueantes adecuados para aplicaciones modernas. Si quieres que amplíe este artículo con temas avanzados como timeouts con orTimeout, cancelaciones o ejemplos con ExecutorService personalizado coméntamelo y preparo una segunda parte enfocada a tu caso real.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat