实现Callable为JDK5新增功能,和实现Runnable相比,借助FutureTask类可以实现更加强大的功能,使用起来更加灵活:
- 相比run方法,call方法可以有返回值。
- 方法可以抛出异常。
- 支持泛型的返回值。
演示示例
class MyThread implements Callable {
@override
public Object call() throws Exception {
业务代码
return xxx;
}
}
public static void main(String[] args) {
MyThread mt = new MyThread();
FutureTask futureTask = new FutureTask(mt);
new Thread(futureTask).start();
try {
// 获取call()的返回值
xxx = futureTask.get();
} catch {...}
}