Callable与Runnable的不同区别在于:
1、Callable有返回值 Runnable没有返回值
2、Callable需要实现的方法是call方法 Runnable需要实现的方法是run方法
3、Callable的call方法会抛异常 Runnable的run方法不会抛异常
Callable与Runnable的相同在于: 都是函数式接口
Callable 通过FutureTask与runnable建立了关系
使用方式:
public class Test03 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask futureTask = new FutureTask<Integer>(new MyThread());
        new Thread(futureTask,"测试").start();
        System.out.println(futureTask.get());
    }
}
class MyThread implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        System.out.println(Thread.currentThread().getName()+"\t--callable");
        return 200;
    }
}
结果:
  测试 --callable
  200
原文:https://www.cnblogs.com/hpdblogs/p/12495107.html