对象 用法 Runnable 没返回值 Callable 有返回值Task extends Runnable只有俩方法,run和cancel,都没返回值。 Future Executor是Runnable和Callable的调度容器(需和Runnable和Callable配套使用)Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果、设置结果操作。(虽然runnable还是没有返回值。)get方法会阻塞,直到任务返回结果FutureTask 是一个RunnableFuture,RunnableFuture实现了Runnbale又实现了Future这两个接口。它可以包装Runnable和Callable, 由构造函数注入依赖。 Runnable注入会被Executors.callable()函数转换为Callable 类型,即FutureTask最终都是执行Callable类型的任务。get()函数获取执行结果,该函数会阻塞,直到结果返回也就是说,提交给线程池的任务和执行后的结果,都放到同一个FutureTask对象中。提交时用到Task属性,返回结果用到Future属性。