相同点:
1、都是接口
2、都可以编写多线程程序
3、都采用 Thread.start()启动线程
主要区别:
Rnnable 接口 run() 方法无返回值;Callable 接口 call() 方法有返回值,是个泛型,和 Future、FutureTask 配合可以用来获取异步执行的结果
Runnable 接口 run() 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call() 方法允许抛出异常,可以获取异常信息
注:Callalbe 接口支持返回执行结果,需要调用 FutureTask.get()得到,此方法会阻塞主进程,如果不调用不会阻塞。
Was this helpful?
0 / 0