小工具      在线工具  汉语词典  css  js  c++  java

FutureTask 和 Future

Java,java 额外说明

收录于:42天前

package com.robinboot.facade.test;

import org.junit.Test;

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

/**
 * @auther: TF12778
 * @date: 2020/4/9 16:03
 * @description:
 */
public class LJFutureTask extends LJTest {

    private final ExecutorService es = new ThreadPoolExecutor(8, 10, 100, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(5000));

    @Test
    public void getFutureRandomNumTest() {

        // 利用Future获取随机数
        Future<Integer> ft = es.submit(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {

                int num = new Random().nextInt(10);
                TimeUnit.SECONDS.sleep(num);
                return num;
            }
        });

        try {
            int num = ft.get();
            System.out.println(num);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

        System.out.println("########################");
    }

    @Test
    public void futureTaskSumTest() {

        // 利用FutureTask获取随机数之和
        Map<String, Future<Integer>> futureMap = new HashMap<>();
        for (int i = 0; i < 10; i++) {
            Future<Integer> fture = es.submit(new Callable<Integer>() {
                @Override
                public Integer call() throws Exception {

                    int num = new Random().nextInt(10);
//                    TimeUnit.SECONDS.sleep(num);
                    return num;
                }
            });
            futureMap.put(i + "", fture);
        }

        int sum = 0;
        for (int i = 0; i < 10; i++) {
            Future<Integer> integerFuture = futureMap.get(i + "");
            try {
                sum = sum + integerFuture.get();
                System.out.println(integerFuture.get());
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
        System.out.println(sum);
    }

    @Test
    public void getFutureTaskRandomNumTest() {
        // 利用FutureTask获取随机数
        FutureTask<Integer> ftu = new FutureTask<>(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {

                int num = new Random().nextInt(10);
                TimeUnit.SECONDS.sleep(num);
                return num;
            }
        });

        new Thread(ftu).start();

        try {
            int num = ftu.get();
            System.out.println(num);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

. . .

相关推荐

额外说明

为什么很多人不鼓励软件测试?如果您月薪超过10000元,请不要点击这里。

2022年已经进入倒计时了,今天跟大家聊一聊软件测试薪资这个话题 和大家说一句掏心窝的话:直到现在,软件测试依旧是寒门改变命运的一个最佳选择之一,要不是怕被喷,我都想把之一去掉,因为想了半天,我实在找不到其它与之匹配的选择。本来想说研发也是,但是不是所有

额外说明

【转载】适配器模式

适配器模式的原理与实现 适配器模式(Adapter Design Pattern)。这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 适配器模式有两种实现方式:类适配器和对象适配器。 类适

额外说明

【Unity3D日常开发】Unity3D中控制人物移动

一、前言 网上关于角色移动的文章太多太多了,就我自己整理的时候都发现写了好多篇(因为有不同的方案),今天就将目前已知的移动角色的方案总结出来,毕竟是一个资源整合的时代,谁也不想找个角色移动的脚本都要找好几篇文章对吧 目前可以划分为三个方面 角色移动到鼠标

额外说明

Linux下搭建PHP开发环境,Php-Fpm进程管理。

目前PHP项目开发几种比较流行的架构搭建中,LNMP在性能方面是最好的,正因为如此,使得LNMP架构逐渐流行起来,今天,前面提到了Nginx部署,由于项目实际环境的需要,今天就在说一下怎么部署PHP。 环境 CentOS 6.3 PHP 5.6 安装步骤

额外说明

[C语言]猜数字

        本文章为c语言猜数字小游戏的教学         设计思路: 目录 1.菜单的创建 2.猜数字的实现 3.完整代码 1.菜单的创建         先设计一个类似菜单的界面,供选择来实现游戏或退出  void menu() { prin

额外说明

Camunda整体架构和相关概念

Camunda BPM 是一个轻量级、开源灵活的工作流框架,它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。 下图显示了最重要的组件以及一些典型的用户角色。 REST API RE

额外说明

三十八、服务部署与迁移示例

服务部署与迁移示例 一、服务部署与迁移示例 1、简单的部署 wordpress 通过 mysql 与 wordpress 镜像包部署持久化的 wordpress 博客网站 1.1、创建 PV cat lnmp-pv.yaml apiVersion: v

额外说明

二十二、Pod存储之volume

Pod 的存储之volume ​容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在Pod 中同时运

额外说明

MFC42D.DLL文件找不到如何解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个MFC42D.DLL文件进行安装(前提是找到适合的版本),当我

额外说明

如何通过巨量千川快速起爆新老账号,巨量千川引爆直播间线上速成

新标题:《探索如何利用巨额千川快速提升账号影响力,引爆直播间人气》 文本: 随着社交媒体的快速发展,很多人都希望能够快速提升自己账号的影响力,点燃直播间的人气。本文将揭示利用千川庞大平台的技巧和策略,帮助您快速实现这一目标。 首先要明确聚道千川平台的特点

ads via 小工具