Future和Callable的关系
Runnable的缺陷
不能返回一个返回值
也不能抛出Checked Exception
Callable接口
类似于Runnable,被其他线程执行的任务
实现call方法
有返回值
Future
作用
可以执行异步子任务
方法
get方法
cancel方法
取消任务的执行
isDone方法
判断线程是否执行完毕
isCancelled方法
判断是否被取消
demo
/**
* 描述: 演示一个Future的使用方法
*/
public class OneFuture {
public static void main(String[] args) {
ExecutorService service = Executors.newFixedThreadPool(10);
Future<Integer> future = service.submit(new CallableTask());
try {
System.out.println(future.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
service.shutdown();
}
static class CallableTask implements Callable<Integer> {
@Override
public Integer call() throws Exception {
Thread.sleep(3000);
return new Random().nextInt();
}
}
}