在Java 8中,可以使用CompletableFuture类来处理Future,并且不需要为每个Future创建线程。CompletableFuture提供了一种更加灵活的方式来处理异步任务。
下面是一个示例代码,演示如何使用CompletableFuture来处理Future,而不需要为每个Future创建线程:
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个CompletableFuture对象,并指定异步任务
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
// 模拟耗时的异步任务
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, CompletableFuture!";
});
// 使用CompletableFuture的方法进行链式调用
future.thenAccept(result -> {
System.out.println("异步任务执行完成,结果为:" + result);
});
// 等待异步任务执行完成
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用CompletableFuture.supplyAsync方法创建了一个CompletableFuture对象,并指定了一个异步任务,该任务会在另一个线程中执行。然后,我们使用thenAccept方法来注册一个回调函数,在异步任务执行完成后会被调用。最后,我们使用get方法来等待异步任务执行完成。
通过使用CompletableFuture,我们可以更加灵活地处理异步任务,而不需要为每个Future创建线程。