Runnable需要实现run()方法
Callable需要实现call()方法
Runnable从jdk1.1开始加入
Callable从jdk1.5开始加入
区别1: 两者最大的区别,实现Callable接口的任务线程能返回执行结果,而实现Runnable接口的任务线程不能返回执行结果
注意点:Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞线程直到获取“将来”的结果,当不调用此方法时,主线程不会阻塞
区别2:Callable接口实现类中run()方法允许将异常向上抛出,也可以直接在内部处理(try…catch); 而Runnable接口实现类中run()方法的异常必须在内部处理掉,不能向上抛出
链接:(20条消息) Runnable接口和Callable接口的区别_perfectyw的博客-CSDN博客_runnable接口和callable接口的区别