Skip to content

Commit 047e09f

Browse files
authored
Merge pull request mouredev#6303 from martinbohorquez/java#21
#21 java
2 parents 66bfebc + 2b06ade commit 047e09f

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import java.util.Random;
2+
import java.util.concurrent.ExecutorService;
3+
import java.util.concurrent.Executors;
4+
import java.util.concurrent.TimeUnit;
5+
6+
public class martinbohorquez {
7+
public static void main(String[] args) {
8+
callbackExample();
9+
orderProcess("Pizza Carbonara");
10+
orderProcess("Pizza Margarita");
11+
orderProcess("Pizza Pepperoni");
12+
orderProcess("Pizza Barbacoa");
13+
}
14+
15+
private static void orderProcess(String dishName) {
16+
orderProcess(dishName, martinbohorquez::confirmOrder, martinbohorquez::orderReady, martinbohorquez::orderDelivered);
17+
}
18+
19+
private static void callbackExample() {
20+
System.out.println("Iniciando el programa...");
21+
Processor processor = new Processor();
22+
processor.process(message -> System.out.println("Callback recibido: " + message));
23+
System.out.println("Programa finalizado.");
24+
}
25+
26+
public static void orderProcess(String dishName, ConfirmCallback confirmCallback,
27+
ReadyCallback readyCallback, DeliveredCallback deliveredCallback) {
28+
ExecutorService executor = Executors.newSingleThreadExecutor();
29+
executor.submit(() -> {
30+
Random random = new Random();
31+
try {
32+
confirmCallback.execute(dishName);
33+
TimeUnit.SECONDS.sleep(random.nextInt(1, 10));
34+
readyCallback.execute(dishName);
35+
TimeUnit.SECONDS.sleep(random.nextInt(1, 10));
36+
deliveredCallback.execute(dishName);
37+
} catch (InterruptedException e) {
38+
throw new RuntimeException(e);
39+
}
40+
});
41+
executor.shutdown();
42+
}
43+
44+
private static void confirmOrder(String dishName) {
45+
System.out.printf("Tu pedido %s ha sido confirmado!%n", dishName);
46+
}
47+
48+
private static void orderReady(String dishName) {
49+
System.out.printf("Tu pedido %s está listo!%n", dishName);
50+
}
51+
52+
private static void orderDelivered(String dishName) {
53+
System.out.printf("Tu pedido %s ha sido entregado!%n", dishName);
54+
}
55+
56+
private interface Callback {
57+
void execute(String message);
58+
}
59+
60+
// Interfaces para los callbacks
61+
public interface ConfirmCallback {
62+
void execute(String dishName);
63+
}
64+
65+
public interface ReadyCallback {
66+
void execute(String dishName);
67+
}
68+
69+
public interface DeliveredCallback {
70+
void execute(String dishName);
71+
}
72+
73+
private static class Processor {
74+
public void process(Callback callback) {
75+
System.out.println("Procesando...");
76+
try {
77+
Thread.sleep(4000);
78+
} catch (InterruptedException e) {
79+
e.printStackTrace();
80+
}
81+
callback.execute("Proceso completo");
82+
}
83+
}
84+
}

0 commit comments

Comments
 (0)