public class TestCompletableFuture {
private static final Executor executor = Executors.newFixedThreadPool(4);
private static void submitSleep(int id) {
CompletableFuture<String> resultCF = CompletableFuture.supplyAsync(new Supplier<String>() {
@Override
public String get() {
try {
// sleep会释放执行权 但不会释放锁 wait会释放执行权和锁
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
return new StringBuffer("success").append(id).toString();
}
}, executor);
// result
resultCF.thenAccept(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(new StringBuffer(s).append(" :").append(System.currentTimeMillis()).toString());
}
});
}
private static void submit(int id) {
CompletableFuture<String> resultCF = CompletableFuture.supplyAsync(new Supplier<String>() {
@Override
public String get() {
return new StringBuffer("success").append(id).toString();
}
}, executor);
// result
resultCF.thenAccept(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(new StringBuffer(s).append(" :").append(System.currentTimeMillis()).toString());
}
});
}
public static void main(String args[]) {
System.out.println("start submit:" + System.currentTimeMillis());
for (int i=1; i<6; i++) {
submitSleep(i);
}
for (int i=6; i<11; i++) {
submit(i);
}
System.out.println(" end submit:" + System.currentTimeMillis());
}
}
CompletableFuture
最新推荐文章于 2025-06-12 18:02:14 发布