runnable 有返回值
时间: 2023-09-27 11:02:22 浏览: 48
Runnable 接口是 Java 中的一个接口,它是使用多线程的一种常用方式。然而,Runnable 接口本身并没有返回值的功能。
Runnable 接口的作用是定义一个线程的任务,即在实现了 Runnable 接口的类的 run() 方法中编写线程的执行逻辑。run() 方法没有返回值,它只负责在线程启动后执行指定的代码。
如果我们需要在线程执行完毕后获取一个结果,我们可以使用 Callable 接口和 Future 接口。Callable 接口是 Runnable 接口的扩展,它的特点是可以返回一个结果。我们可以在实现 Callable 接口的类的 call() 方法中编写线程的执行逻辑,并在 call() 方法中返回一个结果。
在执行 Callable 对象时,我们可以使用 ExecutorService 提供的 submit() 方法,该方法会返回一个 Future 对象。Future 表示线程执行结果的未来对象,我们可以通过调用 Future 的 get() 方法来等待线程执行结果的完成,并获取结果。
总结起来,Runnable 接口没有返回值,它只定义了一个可以在线程中执行的任务;而 Callable 接口可以返回一个结果,它通过返回一个 Future 对象来实现。我们可以通过 ExecutorService 提供的 submit() 方法执行 Callable 对象,并通过 Future 对象获取线程执行的结果。
相关问题
runnable 和 callable 有什么区别
runnable 和 callable 都是 Java 中用于多线程编程的接口,但它们有一些区别。
Runnable 接口只有一个 run() 方法,该方法没有返回值。它用于定义一个可以在另一个线程中运行的任务。当一个线程调用了 Runnable 对象的 run() 方法时,该方法会在当前线程中执行。
Callable 接口也只有一个方法,但它有返回值。它用于定义一个可以在另一个线程中运行的任务,并返回一个结果。当一个线程调用了 Callable 对象的 call() 方法时,该方法会在当前线程中执行,并返回一个结果。
因此,Runnable 接口适用于不需要返回结果的任务,而 Callable 接口适用于需要返回结果的任务。
runnable与callable区别
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的返回值或者异常信息。