首页 > 编程语言 >java for循环内部使用线程

java for循环内部使用线程

时间:2023-11-01 11:13:24浏览次数:30  
标签:java int util 循环 线程 import

/**
* 1、业务场景  
*	1、定时执行时,可能出现数据量大,执行不完,线程直接被终止掉,丢数据。
*/

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
*  1、首先创建线程池,针对线程池开启多个线程。
*  2、for循环开始线程调用。
*  3、线程执行完成终止掉线程。
*/
public class ForLoopMultiThreading {
    public static void main(String[] args) {
        // 创建一个ExecutorService,用于管理线程
        ExecutorService executorService = Executors.newFixedThreadPool(5);

        // 创建一个List,用于存储for循环的结果
        List<Integer> resultList = new ArrayList<>();

        // 定义for循环的起始和结束值
        int start = 0;
        int end = 100;

        // 创建一个for循环,用于计算0到100之间的所有整数
        for (int i = start; i <= end; i++) {
            // 将for循环的结果添加到List中
            resultList.add(i);

            // 提交一个任务到ExecutorService中,用于执行for循环的每个迭代
            executorService.submit(() -> {
                // 在这个线程中执行for循环
                for (int j = start; j <= end; j++) {
                    System.out.println("Thread: " + Thread.currentThread().getName() + ", i: " + i + ", j: " + j);
                }
            });
        }
        
          //慎用:存在数据量大执行不完,直接关闭线程池,数据丢失。   根据业务场景自定义
          //如果线程内部报错,直接终止线程。按照定时任务执行的,定时执行五分钟一次。
            try {
                if (!executorService.awaitTermination(300, TimeUnit.SECONDS)) {
                    // 如果任务在300秒内仍未完成,强制关闭线程池
                    executorService.shutdownNow();
                }
            } catch (InterruptedException e) {
                // 捕获异常,并强制关闭线程池
                executorService.shutdownNow();
                e.printStackTrace();
            }
        

        // 关闭ExecutorService
        executorService.shutdown();

        // 输出for循环的结果
        System.out.println("Result List: " + resultList);
    }
}

标签:java,int,util,循环,线程,import
From: https://www.cnblogs.com/cmsdnbog/p/17802566.html

相关文章

  • 如何用Java实现一个线程安全的HashMap?
    有以下几种方式可以实现线程安全的HashMap:使用ConcurrentHashMap类实现:ConcurrentHashMap是Java集合框架中的一个类,它是线程安全的HashMap实现。ConcurrentHashMap的实现方式是将一个大的Map拆分成多个小的Map片段,每个Map片段上都有自己的锁,这样多个线程在访问不同的Map片段时就可......
  • 记一次 .NET 某工厂无人车调度系统 线程爆高分析
    一:背景1.讲故事前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知。二:为什么会爆高1.查看托管线程别人说的话不一定是真,得自己拿数据出来说话,可以用!t命令观察一下便知。0:000>......
  • 二、2、java基础之运算符与键盘录入(scanner)
    一、运算符分类:算术运算符:+,-,*,/,++,--赋值运算符:=,+=,-=,*=,/=,%=关系运算符:==,>,<,>=,<=,!=逻辑运算符:&,|,^,~,||,&&位运算符:&,|,^,~,<<,>>,>>>三目运算符:(关系表达式)?表达式1:表达式2;packagecom.shujia.day02;/*三目运算符......
  • java 开发中VO、PO、DO、DTO、BO、QO、DAO、POJO各种傻傻分不清
    VO(ValueObject):值对象,主要用于业务层之间的数据传递,是方法返回类型。例如,一个方法需要返回用户的信息,可以创建一个UserVO,包含用户的姓名、年龄等信息。PO(PersistentObject):持久化对象,用于表示数据库中的一条记录,与数据库表一一对应。例如,数据库中有一个用户表,可以创建一个Use......
  • Java SDK的二次开发
    要进行JavaSDK的二次开发,您可以按照以下步骤进行操作:下载SDK:首先,您需要从相关服务或平台的官方网站下载适用于Java的SDK。通常,这些SDK都会以压缩文件(如.zip或.tar.gz)的形式提供。解压SDK:将SDK压缩文件解压到您的工作目录中,并确保您具有读写该目录的权限。导入SDK:在您的Java项目中,......
  • JavaScript能否实现在线Excel附件的上传与下载?
    前言在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链接单元格的形式来......
  • 二、1、java基础之关键字、标识符、注释、常量、变量及数据类型
    1、关键字关键字是被java语言赋予特殊含义的单词,其中goto和const作为保留字存在,字母都是小写2、标识符用于起名字的规则,对变量,类,接口等起名字的字符序列规则:可以使用大小写字母,可以存在数字。可以使用$和_注意事项:不能以数字开头,不能与关键字重名,区分大小写,见名知意常见的命......
  • javaweb--MyBatis
    持久层框架,用于简化JDBC开发负责将数据保存到数据库的那一层代码JavaEE三层架构:表现层、业务层、持久层免除了几乎所有JDBC代码及设置参数和获取结果集的工作。1、导入查询user表中所有的数据createDATABASEmybatis;usemybatis;droptableifexiststb_user;createtable......
  • java poi 导出excel 单元格样式
    CellStylecs=wb.createCellStyle();//设置字体Fontfont=wb.createFont();font.setColor(IndexedColors.BLACK.getIndex());font.setFontHeightInPoints((short)12);font.setBold(true);//字体样式cs.setFont(font1);//边框cs.setBorderLeft(BorderStyle.THIN);......
  • java webassembly 集成试用
    wasmerio这个组织实现了不少webassembly周边的工具,以下是一个简单的java集成试用安装命令因为java包默认没有发布到中央仓库,需要自己本地安装localmavenmvninstall:install-file-Dfile=./wasmer-jni-amd64-darwin-0.3.0.jar-DgroupId=org.wasmer-Dartifac......