学习
实践
活动
专区
工具
TVP
写文章

Callable and Future in Java(java中的Callable和Future)

为了之处这个特性,在java中就增加了Callable接口。 Callable vs Runnable 为了实现Runnable接口,需要实现不返回任何返回值的run方法,而对于callable,我们需要实现在完成的时候,返回接口的call方法,注意,线程不能用Callable 需要注意的是,Callable和Future做了两件不同的事情,Callable和Runnable类似,因为它封装了一个任务,该任务在另外一个线程上运行,而Future用于存储从另外一个线程获得的结果, FutureTask可以通过为其提供的构造函数来创建Callable,然后将FutureTask对象提供给Thread的构造函数来创建Thread对象。因此,间接的实现了Callable创建线程。 在此要重点强调的是,没有办法直接用Callable创建线程。

20430
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java并发之Executor + Callable + Future引入 Callable + FutureCallable + Future实例

    引入 Callable + Future Callable + Future实例 引入 Callable + Future Executor框架的优势之一就是,可以运行并发任务并且返回结果。 这个接口就是 Callable接口:这个接口声明了一个call方法,类似于Runnable接口的run方法,是任务具体的逻辑,不同就在于可以有返回值,而且这个接口是一个泛型接口,这就意味着必须声明call image.png Callable + Future实例 接下来,我们编写一个实例来接受任务的返回结果 实现一个Callable对象,由于返回值是Integer,所以定义为Callable<Integer ; public class FactorialCaculator implements Callable<Integer> { private Integer number; 通过call方法获取返回结果,为了达到这个目的,可以使用get方法,这个方法会一直等到callable对象的call方法返回结果。如果此时任务尚未完成,get方法就会一直阻塞到线程完成。

    20930

    简单理解Callable接口

    Callable接口:   Callable,新启线程的一种方式,返回结果并且可能抛出异常的任务,在前面的新启线程的文章中用过,但是没有具体讲解   优点:     可以获取线程的执行结果,也称为返回值     通过与Future的结合,可以实现利用Future来跟踪异步计算的结果 Runnable和Callable的区别:   Callable规定的方法是call(),Runnable规定的接口是run ();   Callable的任务执行后可返回值,而Runnable的任务是不能有返回值的;   call方法可以抛出异常,run方法不可以   运行Callable任务可以拿到一个Future对象,表示异步计算的结果 或者Runnable接口的实现对象,因为FutureTask实现了Runnable接口,所以FutureTask也可以提交给线程池 Callable,Future,FutureTask三者之间的关系: image.png Callable的两种执行方式: 1:借助FutureTask,包装Callable接口的实现类,然后传递给Thread线程执行 package org.dance.day2.future

    42751

    6.实现 Callable 接口

    6.实现 Callable 接口 前言 本篇章来介绍一下创建线程的第三种方式,其中创建线程一共有四种方式: 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式 那么下面我们来介绍一下 实现 Callable 接口的方式。 Callable 接口 - Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口 - Callable 接口类似于 Runnable 它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值 代码示例 1.创建一个实现Callable的实现类, 可以通过设置泛型,指定call方法返回的类型 import java.util.concurrent.Callable; //1.创建一个实现Callable的实现类, 可以通过设置泛型,指定call方法返回的类型 class CallableThread

    19140

    Java线程(七):Callable和Future

    接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。         Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被 ,下面来看一个简单的例子: public class CallableAndFuture { public static void main(String[] args) { Callable <Integer> callable = new Callable<Integer>() { public Integer call() throws Exception { 下面来看另一种方式使用Callable和Future,通过ExecutorService的submit方法执行Callable,并返回Future,代码如下: public class CallableAndFuture

    36400

    扫码关注腾讯云开发者

    领取腾讯云代金券