轻松理解-中高级java开发必知必会之 Callable和Runable

相对于Runable,Callable的出镜率其实并不高,二者区别其实有限,下面是具体分析:

我们进行异步执行的时候,如果需要知道执行的结果,就可以使用callable接口,并且可以通过Future类获取到异步执行的结果信息。如果不关心执行的结果,直接使用runnable接口就可以了,因为它不返回结果,当然啦,callable也是可以的,我们不去获取Future就可以了。

相同点:

两者都是接口;(废话)

两者都可用来编写多线程程序;

两者都需要调用Thread.start()启动线程;

 

不同点:

两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;

Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;

 

注意点:

Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!

猜你喜欢

转载自blog.csdn.net/qq_34077993/article/details/83743851