https://www.jianshu.com/p/547d2d7761db
package com.zxg;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class comFuture {
public static void main(String[] args) throws Exception {
{
ExecutorService executor = Executors.newFixedThreadPool(4);
Future<String> future = executor.submit(() -> {
Thread.sleep(2000);
return "hello world";
});
//轮询获取结果
while (true) {
if (future.isDone()) {
System.out.println(future.get());
break;
}
}
executor.shutdown();
}
{
System.err.println("async");
ExecutorService executor = Executors.newFixedThreadPool(4);
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
return "hello world";
}, executor);
future.complete("goAway");
//thenapply可以在后面拼东西
future = future.thenApply((element)->{
return element+" addPart";
}).thenApply((element)->{
return element+" addTwoPart";
});
//等到有值了再获取
//System.out.println(future.get());
future.whenComplete((v, e) -> {
System.out.println("return value:" + v + " exception:" + e);
});
//除了这个whenComplete还有一个方法叫handle , 不同的就是他返回一个返回值,而
executor.shutdown();
}
}
}
版权声明:本文为zhoucs86原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。