面试题:接口Runnable和Callable接口区别
相同点:
1、两者都是接口。
2、两者都可以用来写多线程程序。
3、两者都需要调用Thread.start()启动线程。
不同点:
1、实现Callable接口线程能返回结果,实现Runnable接口的线程不能返回结果。
2、Callable接口的call()方法允许抛出异常,而Runnable接口的run()方法不允许抛异常。
3、实现Callable接口的线程可调用Funture.cancel()取消执行,而Runnable接口线程不能。
注意点:
Callable接口支持返回执行实现。而FutureTask.get()方法,会阻塞主线程,当不调用此方法,主线程将不会阻塞。