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

通过多线程 每组5个数字进行打印

Java 额外说明

收录于:93天前

线程配置:

<!-- 通用异步执行器 -->
	<bean id="taskExecutor"
		  class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<property name="corePoolSize" value="10" />
		<property name="maxPoolSize" value="30" />
	</bean>
    /**
     * 随机生成22个数字
     * 每组5个数字,最后一组动态组装
     * 通过多线程,将每组数据给打印出来
     */
    @Test
    public void testResiveData() {

        List<Integer> randomList = new ArrayList<>();

        System.out.println("生成数据开始。。。。。");
        for (int a = 0; a < 22; a++) {
            Random rd = new Random();
//            System.out.println(rd.nextInt(100));//范围0-99
            randomList.add(rd.nextInt(100));
        }
        System.out.println(randomList.toString());
        System.out.println("生成数据结束。。。。。\r\n");

        int toIndex = 5;
        for (int i = 0; i < randomList.size(); i += 5) {
            if (i + 5 > randomList.size() ) {        //作用为toIndex最后没有5条数据则剩余几条newList中就装几条
                toIndex = randomList.size() - i;
            }
            List newList = randomList.subList(i, i+toIndex);

            executeTask(newList);
        }
    }

    public void executeTask(final List taskList) {

        System.out.println("\r\n打印数据。。。。。");
        System.out.println(taskList.toString());//范围0-99
        for (int i = 0; i < taskList.size(); i++) {

            final String str = ObjectUtils.toString(taskList.get(i));
            doTask(str);
        }
    }

    public void doTask(String str) {
        taskExecutor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    System.out.print("当前线程名称:" + Thread.currentThread().getName() + "\r\ndata:" + str + "\r\n");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

测试结果如下图,可以看到打印的线程名都不同,最多创建了10个线程(这里可以看到最大的线程名是taskExecutor-10)

全部测试结果:

生成数据开始。。。。。
[62, 91, 11, 16, 42, 99, 21, 48, 83, 65, 8, 99, 7, 86, 91, 26, 82, 5, 37, 52, 50, 15]
生成数据结束。。。。。


打印数据。。。。。
[62, 91, 11, 16, 42]
当前线程名称:taskExecutor-1
data:62
当前线程名称:taskExecutor-2
data:91
当前线程名称:taskExecutor-3
data:11
当前线程名称:taskExecutor-4
data:16

打印数据。。。。。
[99, 21, 48, 83, 65]
当前线程名称:taskExecutor-5
data:42
当前线程名称:taskExecutor-6
data:99
当前线程名称:taskExecutor-7
data:21
当前线程名称:taskExecutor-8
data:48
当前线程名称:taskExecutor-9
data:83

打印数据。。。。。
[8, 99, 7, 86, 91]
当前线程名称:taskExecutor-10
data:65

打印数据。。。。。
[26, 82, 5, 37, 52]
当前线程名称:taskExecutor-3
data:86
当前线程名称:taskExecutor-4
data:91
当前线程名称:taskExecutor-10
data:99
当前线程名称:taskExecutor-7
data:52
当前线程名称:taskExecutor-1
data:8
当前线程名称:taskExecutor-4
data:37
当前线程名称:taskExecutor-6
data:5
当前线程名称:taskExecutor-5
data:26
当前线程名称:taskExecutor-3
data:82

打印数据。。。。。
当前线程名称:taskExecutor-2
data:7
[50, 15]
当前线程名称:taskExecutor-8
data:50
当前线程名称:taskExecutor-10
data:15

. . .

相关推荐

额外说明

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境(IDE),广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能: 集成开发环境:V

额外说明

【1++的数据结构初阶】之栈

-作者主页:进击的1++ - 专栏链接:1++的数据结构初阶 文章目录 一,什么是栈? 二,栈的实现 1. 定义一个栈 2. 栈的各接口的实现 栈的初始化 入栈 判栈空 出栈 取栈顶 销毁栈 一,什么是栈? 栈是一种特殊的线性表,其只允许在固定的一端进行

额外说明

Unity4.5动画控制状态切换监听脚本

在Mecanim动画由状态机控制的情况下,监听动画状态变化的代码。可以根据需要,删减其中的方法。 using UnityEngine; using System.Collections; using System.Collections.Generic;

额外说明

《零基础安装 Oracle 数据库》RAC集群系列 ❹ 简单两步快速安装 Oracle 19C RAC 数据库

前言 很多朋友吐槽我的脚本不会用,看不懂,哎,一言难尽!于是,我将 [vagrant + virtualbox + shell脚本] 组合起来,实现了零基础也可安装 Oracle 数据库的方式,我称之为 新手纯享版本,真正一行短命令! - 支持 RAC

额外说明

[Eigen中文文档] 块操作

专栏总目录 本文目录 使用块操作 列和行 关于角的操作 向量的块操作 英文原文(Block operations) 本文介绍了块操作。块是matrix或array的部分矩形元素。块表达式既可以用作右值也可以用作左值。与Eigen表达式一样,如果让编译器进

额外说明

HNU数据结构与算法分析-实验四--- 对输入的两棵二叉树A和B,判断B是不是A的子树

本篇代码包括实验报告与源码, 实验报告最终得分为94/100 下面我将先给出实验报告,再附上源码, 其中算法的精髓我在报告中彩色标注了,如果有不理解的同学可以先看看,我觉得应该会有帮助 最后,如果感觉有帮助的话还请点个赞,你的重要支持是我继续创作的动力。

额外说明

MySQL 分组后统计 TopN 优化思路

一、需求背景 在 MySQL 中我们需要分组统计数据时,大多都需要借助 group by 语句,但基本都是对一个组下的整体操作,比如计算最大最小值,计算总数,整体拼接等等,但如果想要对每个组下的数据排序后取出 topN 值便不是那么的方便了,本文就带大家

额外说明

Vue中的插槽和具名插槽(vue 2.5已淘汰的语法和vue3.0支持语法对比)

目录 不用插槽slot的我们应该怎么做 vue的插槽slot基本用法了解 具名插槽 没有具名插槽出现的问题 具名插槽vue 2.5语法展示(已被官方废弃且不会出现在Vue 3中) 具名插槽vue 2.6+语法展示(Vue 3支持) 首先来看看插槽的使用场

额外说明

Spring Boot 项目使用Spring Security防护CSRF攻击实战

Spring Boot与Spring Security Spring Boot项目结合Spring Security ,可以实现用户认证和用户授权。 Spring Security的用户认证可以是配置的用户、数据库的用户或者直接整合LDAP, 用户授权上

额外说明

在wordpress多站点_如何在WordPress会员站点上停止垃圾邮件注册

WordPress 中的多站点 您想阻止您的 WordPress 会员网站上的垃圾邮件注册吗?对于运营会员网站或允许用户在其网站上注册的网站所有者来说,垃圾邮件注册是一种常见的麻烦。在本文中,我们将向您展示如何阻止 WordPress 会员网站上的垃圾邮

ads via 小工具