1、Callable 与 Runable 区别
当我们使用多线程做相应操作时想要知道线程是否执行完毕。在使用实现Runnable接口或者 继承Thread两种方式时都有个缺点那就是在任务执行完成之后无法获取返回结果。如果想 知道线程是否执行完毕方法有很多种这篇文章主要记录callable和future。从JAVA SE 5.0 开始引入了 Callable和Future,通过它们构建的线程,在任务执行完成后就可以获取执行结 果。
java.lang.Runnable接口,就声明了 run(),其返回值为void,当然就无法获取结果了
@Functionallnterface public interface Runnable {
l^hen an object implementing interface RunnabLe
is used
*to create a thread, starting the thread causes the object’s
*run
method to be caLLed in that separately executing
*thread.
*
*The generaL contract of the method run
is that it may f take any action whatsoever.
*
"@see java.Lang・ Thread衣厂un()
*/
public abstract void run()_,
}
而Callable的接口定义如下
^Functionallnterface
public interface Callable< > {
厂丨
*Computes a resuLt, or throws an exception if unabLe to do so.
*
- ©return computed resuLt
-@t方厂ows Exception if unabLe compute a resuLt
*/
call() throws Exception;
}
对比Callable和Runnable的两者区别:
1、 Callable定义的方法是call,而Runnable定义的方法是run。
2、 Callable的call方法可以有返回值,而Runnable的run方法不能有返回值。
2、Callable的call.方法可抛出异常,而Runnable的run方法不能抛出异常。
Was this helpful?
0 / 0