多线程实现Runable接口和Callable接口的区别

先看源码callable接口 ,返回泛型v,可以抛出异常多线程实现Runable接口和Callable接口的区别
Runable接口是抽象方法run,没有返回值,不能抛出异常,有异常在run方法内部处理。
多线程实现Runable接口和Callable接口的区别
总结:
区别1: 两者最大的区别,实现Callable接口的任务线程能返回执行结果,而实现Runnable接口的任务线程不能返回执行结果

注意点:Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞线程直到获取“将来”的结果,当不调用此方法时,主线程不会阻塞

区别2:Callable接口实现类中run()方法允许将异常向上抛出,也可以直接在内部处理(try…catch); 而Runnable接口实现类中run()方法的异常必须在内部处理掉,不能向上抛出