Runnable和Callable接口的区别

线程内容回顾
--------------------------------------------------------------
1.Android 中线程应用基础?(Thread,Runnable,synchronized)
2.Android 中线程消息模型?(Message,MessageQueue,Looper,Handler,HandlerThread)
3.Android 中线程异步对象?(AsyncTask)
4.Android 中线程池应用?(Executor,Executors,Runnable,Callable,Timer)

--------------------------------------------------------------


线程池的执行方法有俩个,一个是excute(没有返回),另一个是submit(返回一个Future<>)。构造有参时候可以放任务,callble和Runnable,

Callable接口和Runnable接口相似,区别就是Callable需要实现call方法,而Runnable需要实现run方法;并且,call方法还可以返回任何对象,无论是什么对象,JVM都会当作Object来处理。但是如果使用了泛型,我们就不用每次都对Object进行转换了。

 

Runnable和Callable都是接口

不同之处:
1.Callable可以返回一个类型V,而Runnable不可以
2.Callable能够抛出checked exception,而Runnable不可以
3.Runnable是自从java1.1就有了,而Callable是1.5之后才加上去的
4.Callable和Runnable都可以应用于executors。而Thread类只支持Runnable.
上面只是简单的不同,其实这两个接口在用起来差别还是很大的。Callable与executors联合在一起,在任务完成时可立刻获得一个更新了的Future。而Runable却要自己处理

你可能感兴趣的:([Android]线程池)