runnable和callable区别是什么?
发布网友
发布时间:2022-04-20 04:05
我来回答
共1个回答
热心网友
时间:2022-07-13 02:43
1、意义区别:
Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;
Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。
2、使用方法区别:
定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
举例说明:
package org.thread.demo;
class MyThread extends Thread{
private String name;
public MyThread(String name) {
super();
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
runnable和callable区别是什么?
1、意义区别:Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。2、使用方法区别:定义runnable接口的实现类,并重写该接口的run()方法,该run()方...
STM32F207怎么样?
STM32F207怎么样?这个问题不能一概而论,要根据您的具体情况进行分析。意法半导体致力于引领单片机技术和产品的创新,推动生态系统的建设,为用户提供满意的产品和技术服务。意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – ...
线程runnable和callable的区别
(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法不可以 (4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,...
高频多线程高并发JUC编程(一)
Runnable: 没有返回值、效率相比于Callable 相对较低! 线程和进程 进程:一个程序,允许一个java程序会进程里面会出现一个java.exe;数据+代码+pcb 一个进程可以包含多个线程,至少包含一个线程! Java默认有几个线程?2个线程! main线程、GC线程 线程:开了一个进程qq,聊天打字,消息提示(线程负责的) 对于Java而言:Th...
JAVA中Callable的call方法抛出的异常会抛到那里?
Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更加强大的功能。Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能,Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常。
java中实现线程的方法有哪些
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。Callable和Runnable有几点不同:①Callable规定的方法是call(),而Runnable规定的方法是run().②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的 ③call()方法可抛出异常,而run()方法是不...
多线程之completableFuture详述
Callable与Runnable的功能大致相似,但是call()函数有返回值。Callable一般是和ExecutorService配合来使用的 Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成 在Future接口中声明了5个方法 cancel方法用来取消任务,如果取消任务成功则返回true,如果取消任务失败则返回false。 isCancelled方法表示任务是...
线程的4种创建方法和使用详解!
而Callable和Runnable类似,是JDK1.5提供的,弥补了调用线程没有返回值的情况,可以看做是Runnable的一个补充,下面看看Callable的实现。publicclassMyThreadimplementsCallable<String>{@OverridepublicStringcall()throwsException{System.out.println(Thread.currentThread().getName());returnThread.currentThread(...
Java 函数式接口
1、什么是函数式接口只包含一个抽象方法的接口,称为函数式接口,该抽象方法也被称为函数方法。 我们熟知的Comparator和Runnable、Callable就属于函数式接口。这样的接口这么简单,都不值得在程序中定义,所以,JDK8在 java.util.function 中定义了几个标准的函数式接口,供我们使用。Package java.util....
线程的三种创建方式
Threadt2=newThread(()->log.info("{}",Thread.currentThread().getName()),"t2");t2.start();3、Callable和ThreadCallable和Runnable一样,也是一个函数式接口,二者的区别非常明显,Runnable中run方法没有返回值,Callable中的run方法有返回值(可以通过泛型约束返回值类型)。因此在需要获取线程执行...
老生常谈线程基础的几个问题
实现Runnable接口 继承Thread类 线程池创建线程 带返回值的Callable创建线程 但是看它们的底层就一种方式,就是通过newThread()实现,其他的只不过在它的上面做了层封装。 实现Runnable接口要比继承Thread类的更好: 结构上分工更明确,线程本身属性和任务逻辑解耦。 某些情况下性能更好,直接把任务交给线程池执行,无需再次...