Runnable和Callable有什么区别

相同点:

  • 都是接口
  • 都可以编写多线程程序
  • 都采用Thread.start()启动线程

不同点:

  • Runnable接口run方法无返回值,Callable接口call方法有返回值,是个泛型
    Runnable和Callable有什么区别
    Runnable和Callable有什么区别
    注:Callable接口支持返回执行结果,需要调用**FutureTask.get()**得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞:
    Runnable和Callable有什么区别
  • Runnable接口中的run方法只能抛出运行时异常,且无法捕获处理,Callable接口call方法允许抛出异常,可以获取异常信息