JDK中Future的源码解读

Future这个类是一个异步执行结果的类,用来获取异步执行的结果信息

package lucky;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;




/**
 * @Author:chaoqiang.zhou
 * @Description:Future就是一个异步执行的结果。这个Future类的提供的方法就是为了检查异步的执行是否完成,
 * 去等待异步执行的完成,或者拿到异步执行完成后的结果信息
 * 执行的结果只能通过这个类里面的get方法,当执行结果的时候获取到,否则会一直的阻塞,直到执行完毕获取到结果为止
 *
 * @Date:Create in 13:47 2017/10/19
 */
public interface Future<V> {

    /**
     *企图去取消任务的执行,当然了,如果任务已经完成结束的话,那么取消就失败呗,或者已经被取消了,也就失败呗;
     * 再者其他一些原因,不能被取消呗
     * 如果已经选择取消,并且这个任务还没有开始的话,那么对不起了,这个任务就被判了死刑,永远不会在执行了
     * 当然了,如果在这个任务执行的过程中,选择了取消的话,那么就通过mayInterruptIfRunning参数来决定,是否中断这个任务的执行
     * 如果这个参数是true,那么就立马停止掉,否则的话,给人家一条活路,执行完在kill掉
     * @param mayInterruptIfRunning
     * @return
     */
    boolean cancel(boolean mayInterruptIfRunning);


    /**
     * 如果这个任务在完成之前,被正常的cancel掉,也就是调用cannel方法正常,就返回true
     * @return
     */
    boolean isCancelled();


    /**
     * 如果这个任务完整的执行了,就返回true
     *这里完整的意思是可能是这个任务被中断,执行过程中出现异常或者被取消,都回返回true
     * 所以这个方法的意思是,这个任务执行没执行,只要执行就返回true
     * @return
     */
    boolean isDone();

    /**
     * 一直处于等待状态,直到获取到执行的结果
     * @return
     * @throws InterruptedException
     * @throws ExecutionException
     */
    V get() throws InterruptedException, ExecutionException;


    /**
     * 等待一段时间后,就回去结果
     * @param timeout
     * @param unit
     * @return
     * @throws InterruptedException
     * @throws ExecutionException
     * @throws TimeoutException
     */
    V get(long timeout, TimeUnit unit)
            throws InterruptedException, ExecutionException, TimeoutException;
}

猜你喜欢

转载自blog.csdn.net/zhouchaoqiang/article/details/78284059
今日推荐