runnable与callable区别
时间: 2023-04-27 12:00:15 浏览: 63
Runnable和Callable都是Java中用于多线程编程的接口,但是它们之间有一些区别。
1. 返回值类型不同
Runnable接口没有返回值,它的run()方法是void类型的,而Callable接口有返回值,它的call()方法可以返回一个泛型类型的值。
2. 抛出异常不同
Runnable接口的run()方法不能抛出异常,而Callable接口的call()方法可以抛出异常。
3. 使用方式不同
Runnable接口通常用于执行一些简单的任务,而Callable接口通常用于执行一些比较复杂的任务,需要返回结果或者抛出异常。
4. 线程池调用方式不同
在使用线程池时,可以将Runnable对象作为参数传递给ExecutorService的execute()方法,而将Callable对象作为参数传递给ExecutorService的submit()方法。submit()方法返回一个Future对象,可以用来获取Callable的返回值或者异常信息。
相关问题
runnable和callable区别
Runnable接口和Callable接口都可以用来表示一个线程任务。Runnable接口是Java早期版本中定义的,而Callable接口是在Java 5中引入的。
Runnable接口只定义了一个run()方法,这个方法的返回值为void,表示线程任务执行结束后不需要返回任何值。
而Callable接口则定义了一个call()方法,这个方法可以返回一个泛型的结果类型,表示线程任务执行结束后可以返回一个结果。
因此,Runnable接口主要用于执行没有返回结果的线程任务,而Callable接口主要用于执行需要返回结果的线程任务。
runnable和callable的区别
Runnable和Callable都是Java中用于多线程编程的接口,但它们之间有一些区别。
Runnable接口只有一个run()方法,该方法没有返回值。它用于定义一个线程的执行任务,但是无法返回执行结果。
Callable接口也有一个call()方法,但是它有返回值。它用于定义一个线程的执行任务,并且可以返回执行结果。
因此,如果需要在多线程编程中获取执行结果,应该使用Callable接口。如果只需要执行任务而不需要返回结果,则可以使用Runnable接口。