Runnable和Callable的区别?
时间: 2023-06-10 17:05:30 浏览: 95
Runnable和Callable都是Java中用于多线程编程的接口。
Runnable是一个函数式接口,其中只有一个run()方法,用于定义线程要执行的任务。
Callable也是一个函数式接口,其中只有一个call()方法,用于定义线程要执行的任务,并且可以返回结果。
所以,Runnable只能执行任务,而Callable既能执行任务,还能返回结果。
在使用时,可以通过将Runnable实例传递给Thread构造函数来创建一个新线程,而Callable通常要与Executor框架一起使用。
总之,Runnable适用于没有返回值的情况,Callable适用于需要返回值的情况。
相关问题
说一下 runnable 和 callable 有什么区别?
Runnable和Callable都是Java中用于多线程编程的接口,但是它们有一些区别。
1. 返回值类型:Runnable的run()方法没有返回值,而Callable的call()方法有返回值。
2. 抛出异常:Runnable的run()方法不能抛出异常,而Callable的call()方法可以抛出异常。
3. 使用方式:Runnable通常用于执行一些简单的任务,而Callable通常用于执行一些复杂的任务,并且需要返回结果。
4. 线程池:在使用线程池时,可以将Runnable对象放入线程池中执行,但是需要使用Future对象来获取执行结果;而Callable对象可以直接放入线程池中执行,并且可以直接获取执行结果。
总之,Runnable和Callable都是用于多线程编程的接口,但是它们的使用场景和特点有所不同。
runnable和callable区别
Runnable接口和Callable接口都可以用来表示一个线程任务。Runnable接口是Java早期版本中定义的,而Callable接口是在Java 5中引入的。
Runnable接口只定义了一个run()方法,这个方法的返回值为void,表示线程任务执行结束后不需要返回任何值。
而Callable接口则定义了一个call()方法,这个方法可以返回一个泛型的结果类型,表示线程任务执行结束后可以返回一个结果。
因此,Runnable接口主要用于执行没有返回结果的线程任务,而Callable接口主要用于执行需要返回结果的线程任务。
阅读全文