Saltar a contenido

Sesión 3 · Asincronía y primera app

Tras ver Future, async/await y crear la primera app.

R17

La cafetera. Método prepararCafe() que devuelve un CompletableFuture<String> y tarda 3 s (usa Thread.sleep dentro de supplyAsync). En main: muestra Enciendo la cafetera, espera el café con join() y muestra ¡Café listo!.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

import java.util.concurrent.CompletableFuture;
public class Solucion {
    static CompletableFuture<String> prepararCafe() {
        return CompletableFuture.supplyAsync(() -> {
            try {
// ... (resto de la solución bloqueado)

R19

Tres descargas. Tres tareas CompletableFuture que tardan 1, 2 y 3 s. Mide el tiempo pidiéndolas una detrás de otra y después todas a la vez con CompletableFuture.allOf.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

import java.util.concurrent.CompletableFuture;
public class Solucion {
    static CompletableFuture<String> descargar(String nombre, int segundos) {
        return CompletableFuture.supplyAsync(() -> {
            try {
// ... (resto de la solución bloqueado)

R20

División peligrosa. Método dividir(a, b) que devuelve un CompletableFuture<Double>, tarda 1 s y falla si b es 0. Captura el error con exceptionally o con try/catch sobre join().