Skip to content

Commit 1b87845

Browse files
committed
add some methods
1 parent b72cc10 commit 1b87845

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

src/main/java/cn/hackingwu/promise/jdk8/IOPromise.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.hackingwu.promise.jdk8;
22

3+
import java.util.concurrent.ExecutionException;
34
import java.util.concurrent.Executor;
45
import java.util.concurrent.ExecutorService;
56
import java.util.concurrent.Executors;
@@ -9,6 +10,9 @@
910
import java.util.concurrent.TimeUnit;
1011
import java.util.concurrent.atomic.AtomicInteger;
1112
import java.util.concurrent.atomic.AtomicLong;
13+
import java.util.function.Supplier;
14+
15+
import static cn.hackingwu.promise.jdk8.Promise.all;
1216

1317
/**
1418
* @Author: Jason Wu
@@ -52,4 +56,34 @@ public Thread newThread(Runnable r) {
5256
}
5357
}
5458

59+
public static Supplier getSupplier(int i){
60+
return () -> {
61+
System.out.println("supplier"+i+": "+Thread.currentThread().getId());
62+
Supplier supplier1_1 = () ->{
63+
System.out.println("supplier"+i+"_1: "+Thread.currentThread().getId());
64+
return null;
65+
};
66+
Supplier supplier1_2 = () ->{
67+
System.out.println("supplier"+i+"_2: "+Thread.currentThread().getId());
68+
return null;
69+
};
70+
try {
71+
Promise.all(supplier1_1, supplier1_2).get();
72+
} catch (InterruptedException e) {
73+
e.printStackTrace();
74+
} catch (ExecutionException e) {
75+
e.printStackTrace();
76+
}
77+
return null;
78+
};
79+
}
80+
81+
public static void main(String[] args){
82+
Supplier supplier1 = getSupplier(1);
83+
Supplier supplier2 = getSupplier(2);
84+
Supplier supplier3 = getSupplier(3);
85+
86+
all(supplier1, supplier2, supplier3);
87+
}
88+
5589
}

src/main/java/cn/hackingwu/promise/jdk8/Promise.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,23 @@ private static CompletableFuture[] supplyAsync(Supplier... suppliers){
2020
return futures;
2121
}
2222

23+
private static CompletableFuture[] runAsync(Runnable... runnables){
24+
CompletableFuture[] futures = new CompletableFuture[runnables.length];
25+
for (int i = 0; i < runnables.length; i++) {
26+
futures[i] = CompletableFuture.runAsync(runnables[i], getExecutor());
27+
}
28+
return futures;
29+
}
30+
31+
public static CompletableFuture all(Runnable... runnables){
32+
return CompletableFuture.allOf(runAsync(runnables));
33+
}
34+
35+
public static CompletableFuture any(Runnable... runnables){
36+
return CompletableFuture.anyOf(runAsync(runnables));
37+
}
38+
39+
2340
public static CompletableFuture all(Supplier... suppliers){
2441
return CompletableFuture.allOf(supplyAsync(suppliers));
2542
}

0 commit comments

Comments
 (0)