java for循环内部使用线程

这篇具有很好参考价值的文章主要介绍了java for循环内部使用线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

/**
* 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);
    }
}

文章来源地址https://www.toymoban.com/news/detail-736081.html

到了这里,关于java for循环内部使用线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++基础】auto关键字(C++11)(auto的使用细则;auto不能推导的场景;auto的使用场景;基于范围的for循环)

    在早期C/C++( C++98 )中auto的含义是:使用auto修饰的变量,是具有 自动存储器的局部变量 ,但遗憾的是一直没有人去使用它。因为在函数内定义的变量默认就是局部变量。 C++11 中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的 类型指示

    2023年04月13日
    浏览(45)
  • 【Java】Java中使用HashMap优化多层for循环嵌套以及for循环之性能优化

    for循环是开发时常用的语法之一,比如对数组,集合的遍历等,但是如果使用不好也会出现很多新能损耗的问题,今天就来讲解一下for循环的常用性能优化问题。 for循环 里面还有 for循环, 然后做一些数据匹配、处理 这种场景。 m层嵌套的n次的for循环的时间复杂度为O(n^m),

    2024年02月16日
    浏览(45)
  • java springboot架构 自定义注解保存项目业务日志,使用线程池保存到数据库

    目录 1:pom.xml依赖 2:注解类样例 3:枚举类 4:具体处理方法类 5:线程池类 1:pom.xml依赖 2:注解类样例 3:枚举类 4:具体处理方法类 5:线程池类

    2024年02月15日
    浏览(50)
  • java八股文面试[多线程]——ThreadLocal底层原理和使用场景

    源码分析: ThreadLocal中定义了ThreadLocalMap静态内部类,该内部类中又定义了Entry内部类。 ThreadLocalMap定了 Entry数组。 Set方法: Get方法: Thread中定义了两个ThreaLocalMap成员变量: Spring使用ThreadLocal解决线程安全问题  我们知道在一般情况下,只有 无状态的Bean 才可以在多线程环

    2024年02月10日
    浏览(52)
  • 【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

    Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for循环”。它的设计目的是提供一种简洁、易读的语法,用于遍历集合或数组中的元素,减少了传统 for循环的冗余代码和错误机会。 简单来说, foreach是一种迭代器模式的变体,它允许我们以简单且直观的方式遍历一个

    2024年02月16日
    浏览(49)
  • 嵌入式_常见延时方式的差异与选择(for循环延时、定时器延时、汇编延时....)

    这里整理几种常见的延时方式,并做简单测试供大家参考,如果有什么不对的地方,欢迎指正,共同探讨。 测试基于GD32F103CBT6硬件平台,标准的72MHz系统时钟, 使用标准库GD32F10x_Firmware_Library_V1.0.0 提示:(提示:此库坑多、慎用!) 测试方法为: 1:在Debug模式下延时开始于

    2024年02月02日
    浏览(87)
  • Java开发手册中为什么不建议在for循环中使用“+“进行字符串操作

    java开发手册中对于循环体中进行字符串的拼接要求如下: 【推荐】循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。 说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append操作, 最后通过 toString 方法返回

    2024年02月08日
    浏览(55)
  • 常用的Java线程阻塞业务方法

    在Java中常常使用到多线程处理一些业务,但是也会遇到多线程处理时带来的业务逻辑时序不对问题,例如需要等待一个业务处理完或者下一步的逻辑需要等待多线程得到的结果,下面是几种常用的方法 使用 Thread.join() 方法 对于已知的线程列表,可以遍历列表并调用每个线程

    2024年04月29日
    浏览(41)
  • Java循环对比:传统for循环、增强型for循环和forEach循环

    传统的for循环是一种经典的循环结构,在Java中广泛使用。 以下是传统for循环的特点: 灵活控制:传统for循环使用形式为for (初始化表达式; 终止条件; 步进表达式)的语法,可以手动控制循环的索引,并根据需要执行自定义操作。 索引访问:传统for循环通过索引访问集合或数

    2024年02月07日
    浏览(40)
  • Java循环方式对比:增强型for循环、传统for循环和Lambda表达式for循环

    在Java编程中,循环是一种重要的控制结构,用于迭代遍历集合或数组。Java提供了多种循环方式,其中包括增强型for循环、传统for循环和Lambda表达式for循环。本篇博客将对这三种循环方式进行对比,探讨它们的语法、特性和适用场景,帮助读者在不同情况下选择最合适的循环

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包