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().