`

Callable Future

 
阅读更多
package advancedJava;

import java.util.Random;
import java.util.concurrent.*;

/**
 * callable和future是试验类
 *
 * @author: cuiH
 * Date: 13-11-27
 * 执行一个线程,取得线程返回的结果
 * callable 返回一个结果,future取到返回的结果。
 */
public class CallableAndFuture {
    public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {
        ExecutorService threadPool = Executors.newSingleThreadExecutor();
        Future<String> future = threadPool.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                Thread.sleep(200);
                return "Hello Honey";
            }
        });//提交返回的结果
        System.out.println("等待结果");
        System.out.println("拿到结果:" + future.get(1, TimeUnit.SECONDS));
        //future可以添加参数,此处超过一秒没有取到,我就不取了

        ExecutorService threadPool2 = Executors.newFixedThreadPool(10);


        //提交一批量的结果,然后,立刻获得先获得的结果,同时捕获。应用需要查找
        CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
        for (int i = 0; i < 10; i++) {
            final int finalI = i;
            completionService.submit(new Callable<Integer>() {
                @Override
                public Integer call() throws Exception {
                    Thread.sleep(new Random().nextInt(5000));
                    return finalI;
                }
            });
        }
        for (int i = 0; i < 10; i++) {
            System.out.println(completionService.take().get());
        }
    }
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Callable,Future的使用方式

    Callable,Future的使用方式,里面使用了三种使用方式分别是FutureTask,ExecutorService,ExecutorCompletionService

    Java使用Callable和Future创建线程操作示例

    "Java使用Callable和Future创建线程操作示例" Java使用Callable和Future创建线程操作示例主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作...

    Java中的Runnable,Callable,Future,FutureTask的比较

    Java中的Runnable、Callable、Future和FutureTask是Java多线程编程中的核心概念,它们各自扮演着不同的角色,共同协作以实现并发任务的管理和执行。 1. **Runnable**: Runnable是最基本的多线程接口,它只有一个`...

    Callable和Future.doc

    Callable 和 Future 是 Java 多线程编程中两个重要的接口,它们在处理异步计算和结果获取方面发挥着关键作用。Callable 与 Runnable 相似,但具有更强大的功能,允许任务返回结果并处理异常。 Callable 接口: ...

    【并发编程】 — Runnable、Callable、Future和FutureTask之间的关系

    2 如何使用FutureTask 、Future、Callable、线程池实现线程2.1 FutureTask + Callable实现多线程2.2 线程池+Future+Callable 实现多线程3 Runnable、Callable、Future和FutureTask之间的关系3.1 整体关系介绍3.2 ...

    java并发包之Callable和Future

    Future&lt;Integer&gt; future1 = threadPool.submit(new Callable() { public Integer call() throws Exception { return computeSomething1(); } }); Future&lt;Integer&gt; future2 = threadPool.submit(new Callable...

    Java多线程Callable和Future接口区别

    "Java多线程Callable和Future接口区别" Java多线程Callable和Future接口是Java语言中两个非常重要的接口,它们都是Java多线程编程中使用的接口,用于描述异步计算的结果。在JavaSE5中引入的Callable是一个具有类型...

    总结了Thread-Callable-Future的小demo

    自留demo,主要是Thread-Callable-Future的基本实现。 参考文章: 1、深入理解Callable https://blog.csdn.net/qq_19431333/article/details/77483763 2、彻底理解Java的Future模式: ...

    Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

    `Future`、`FutureTask`、`Callable`和`Runnable`是Java并发编程中的核心接口和类,它们在Android开发中同样有着广泛的应用。下面将详细介绍这些概念以及它们如何协同工作。 1. `Runnable`: 这是Java中最基础的多...

    Callable:Callable与Future在Web应用中的优化案例

    在Java编程中,Callable接口和Future接口是多线程编程中的重要工具,它们在Web应用程序的性能优化中扮演着关键角色。本篇文章将深入探讨Callable和Future如何在Web应用中提高效率并优化资源利用。 Callable接口是...

    Callable, Future, FutureTask2

    通过合规策略对服务器进行监控,确保服务器的运行、帐号在服务器上的操作符合预设的规则。日志:收集、整理服务器的日志信息,提供给管理员查看,并作为异常判断、故障排查的依据。进程:监控服务器上的进程,并对...

    Runnable、Callable、Future、FutureTask有什么关联.docx

    Runnable、Callable、Future、FutureTask有什么关联.docx

    浅谈在Java中使用Callable、Future进行并行编程

    从Java 1.5开始,引入了Callable和Future接口,为并行编程提供了一种更为高效和便捷的解决方案。 Callable接口是Java并发库中的一个关键接口,位于`java.util.concurrent`包下。Callable接口与Runnable接口类似,但...

    Java并发编程Callable与Future的应用实例代码

    Java并发编程Callable与Future的应用实例代码 在Java并发编程中,Callable与Future是两个非常重要的概念,它们通常结合使用来实现异步编程。在本文中,我们将详细介绍Callable与Future的应用实例代码,并探究它们在...

    java Callable与Future的详解及实例

    Callable 和 Future 是 Java 多线程编程中的两个关键接口,它们在 Java 5 及以上版本引入,以增强并发处理的能力。Callable 接口类似 Runnable,但提供了更丰富的功能,而 Future 对象则用于管理和控制异步计算的...

    java通过Callable和Future来接收线程池的执行结果

    Java通过Callable和Future来接收线程池的执行结果 Java中的线程池执行结果获取一直是一个棘手的问题,对于直接继承Thread的方式或实现Runnable接口的方式,都无法获取到线程执行的返回结果。如果线程在执行过程中...

    Java并发工具包

    二、Future和Callable Future接口代表异步计算的结果,而Callable接口则用于定义计算任务。Callable的任务可以有返回值,并可以抛出异常。Future.get()方法用于获取计算结果,如果任务尚未完成,该方法会阻塞等待。 ...

    java线程代码

    FutureTask结合了Future和Callable,可以在Future上调用get()方法获取结果。 ```java Callable&lt;Integer&gt; callable = () -&gt; { return 42; }; FutureTask&lt;Integer&gt; futureTask = new FutureTask(callable); new ...

    JAVA中Callable的使用

    在Java编程语言中,Callable接口是用于创建能够返回结果并可能抛出异常的线程的。与Runnable接口相比,Callable接口提供了更强大的功能,因为Runnable只能定义无返回值的任务,而Callable可以定义有返回值的任务。这...

    详解JDK中ExecutorService与Callable和Future对线程的支持

    Java并发编程中的ExecutorService、Callable和Future Java并发编程中,ExecutorService、Callable和Future是三大核心组件,它们之间紧密相连,共同实现了高效、安全的并发编程。下面我们将详细介绍这些组件的作用和...

Global site tag (gtag.js) - Google Analytics