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

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

Java 额外说明

收录于:52天前

线程配置:

<!-- 通用异步执行器 -->
	<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

. . .

相关推荐

额外说明

Office 365 可免费使用

Office 365免费使用 复制如下代码 @echo off title Activate Office 365 ProPlus for FREE - kkx.net&cls&echo =================================

额外说明

【算法陷阱】Java中两个数字字符相减,结果为int类型

问题描述 在做算法题 有效的数独 的时候,遇到了一个问题: 原题链接 你感觉输出是多少呢?应该是3。这是字符间的ASCII之间的运算,字符0 是48。 其次数组也是哈希表的一种,通常对于范围小的比较适用。

额外说明

C# 53.调用dll库Ymodem操作(UDP)

TcpClient tcpClient; //UDP Udp udpClient; //定义一个数据处理的委托 UdpRxCallBackDelegate d1; public Form1() { InitializeComponent();

额外说明

reorg的使用

来源:[url]http://www.wangchao.net.cn/bbsdetail_1802306.html[/url] 当数据库里某个表中的记录变化量很大时,需要在表上做REORG操作来优化数据库性能。 值得注意的是,针对数据库对象的大量操作,如

额外说明

Java项目防止SQL注入的四种方案

文章目录 1. 使用预编译语句 2. 输入验证和过滤 3. 使用ORM框架 4. 使用安全的数据库访问库 总结 -欢迎来到Java学习路线专栏~Java项目防止SQL注入的四种方案 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒- ✨博客主页:IT·陈寒的

额外说明

计算节点上iptables安全组分析

计算节点上iptables安全组分析 之前介绍过neutron 安全组基于iptables 和 ct 实现,分析一下计算节点上面的neutron 安全组的iptables,加深一下理解iptables以及安全组的实现。(PS: 如下基于openstack

额外说明

[C语言]从两端逐渐打印字符串/Sleep函数/system库函数:cls

        本次项目想制造一个从两端开始分别打印字符串的效果,还会简略的介绍Sleep函数和system库函数中cls命令。 目录 初始代码的创建: Sleep函数:  system库函数 初始代码的创建:                  先创建两

额外说明

10、Redis单线程 VS 多线程

Redis单线程 VS 多线程 redis到底是单线程还是多线程? IO多路复用听说过吗? redis为什么快? 2、Redis为什么选择单线程? 这种问法其实并不严谨,为啥这么说呢? Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的,

额外说明

Windows系统下缺失了xolehlp.dll文件的解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个xolehlp.dll文件(

额外说明

Win11系统由于找不到X3DAudio1_3.dll文件程序无法启动问题

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

ads via 小工具