什么是callable和future

Callable 接口类似于 Runnable,从名字就可以看出来了,但是 Runnable 不会返回结果,并且无法抛出返回结果的异常,而 Callable 功能更强大一些, 被线程执行后,可以返回值,这个返回值可以被 Future 拿到,也就是说, Future 可以拿到异步执行任务的返回值。
可以认为是带有回调的 Runnable。
Future 接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable 用于产生结果,Future 用于获取结果。