Java多线程系列--Future接口和CompletableFuture类

Future接口

Future接口是Java 1.5引入的新特性,可以方便的用于异步结果的获取。

接口定义如下:

public interface Future {

    // 取消提交的异步任务
    boolean cancel(boolean mayInterruptIfRunning);

    // 判断异步任务是否已取消
    boolean isCancelled();

    // 判断异步任务是否已完成
    boolean isDone();

    // 获取异步任务的执行结果,该操作为阻塞操作,异步任务完成后才会返回
    V get() throws InterruptedException, ExecutionException;

    // 获取异步任务的执行结果,若超过timeout,则直接返回(任务未完成的话,返回Null)
    V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
}

可以看出,Future接口最多称得上半异步,因为真正的异步应该是异步任务完成的时候,主动通知我去取任务结果,而不是我自己阻塞获取。

用一个例子说明Future接口的使用,假设有客人拜访我,

你可能感兴趣的:(Java多线程,Java,异步,Future)