Runnable接口是常规的线程接口,线程执行的业务逻辑主体放在 其void Run()方法里面,继承此接口实现此方法。
Callable接口也是一个常规接口,线程执行的业务逻辑主体放在 其v Call()方法里面,只不过这个方法有返回值V(泛型),也可以抛出异常,
FutureTask 实现了RunnableFuture接口,而RunnableFuture又继承了Runnable 和Future接口,FutureTask可以直接将实现了Runnable和Callable接口的对象封装成FutureTask对象。从而调用FutureTask对象的方法。
Future接口内容如下主要是对具体的Runnable或者Callable对象任务执行的结果进行获取(get()),取消(cancel()),判断是否完成等操作
- public interface Future<V> {
- boolean cancel(boolean mayInterruptIfRunning);
- boolean isCancelled();
- boolean isDone();
- V get() throws InterruptedException, ExecutionException;
- V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;
- }