简述
- 实现Callable接口,Callable只有一个方法,它是有返回值的,也可以抛出异常,它的执行结果可以被Future拿到
重要方法
// 取消任务,取消成功返回true,取消失败返回false,mayInterruptIfRunning参数决定一个开启的任务能否被中断,如果任务已经完成,不管mayInterruptIfRunning为true或false,结果都为false,即取消完成的任务会返回false
boolean cancel(boolean mayInterruptIfRunning);
// 判断任务是否被取消,如果任务在正常完成前被取消直接返回true
boolean isCancelled();
// 表示当前任务或所有的任务是否已经完成,如果任务完成,返回true
boolean isDone();
// 获取执行结果,在这个过程中线程会一直阻塞,直到任务执行完毕,如果在此过程中,线程被中断直接抛出异常
V get() throws InterruptedException, ExecutionException;
V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;
参考
Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
Future&Callable