runnable与callable区别
时间: 2023-04-27 21:00:15 浏览: 103
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都是Java中用于多线程编程的接口,但是有一些区别:
1. 返回值类型:Runnable接口没有返回值,而Callable接口有一个泛型返回值。
2. 异常处理:Runnable接口的run()方法无法抛出异常,而Callable接口的call()方法可以抛出异常。
3. 用法:Runnable接口通常用于启动一个线程来执行一个任务,而Callable接口通常用于提交一个任务给线程池,并返回结果。
4. 线程池:Runnable接口可以被提交给线程池执行,而Callable接口也可以被提交给线程池执行,但是需要使用Future获取返回值。
总之,Runnable适合用于不需要返回值的情况,而Callable适合用于需要返回值的情况。
runnable和callable区别
Runnable接口和Callable接口都可以用来表示一个线程任务。Runnable接口是Java早期版本中定义的,而Callable接口是在Java 5中引入的。
Runnable接口只定义了一个run()方法,这个方法的返回值为void,表示线程任务执行结束后不需要返回任何值。
而Callable接口则定义了一个call()方法,这个方法可以返回一个泛型的结果类型,表示线程任务执行结束后可以返回一个结果。
因此,Runnable接口主要用于执行没有返回结果的线程任务,而Callable接口主要用于执行需要返回结果的线程任务。
阅读全文