一、前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧: 继承 Thread 类 实现 Runnable 接口 但这两种方式创建的线程是属于三无产品: 没有参数 没有返回值 没办法抛出异常 用着三无产品总是有一些弊端,其中没办法拿到返回值是最让人不能忍的,于是 Callable 就诞生了。 二、Callable Callable是 Java 1.5 版本引入的特性: Callable是一个泛型接口,里面只有一个call()方法,该方法可以返回泛型值V,使用起来就像这样: import java.util.concurrent.