首页 > 基础资料 博客日记
java for循环内部使用线程
2023-11-01 11:09:31基础资料围观463次
文章java for循环内部使用线程分享给大家,欢迎收藏Java资料网,专注分享技术知识
/**
* 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.cnblogs.com/cmsdnbog/p/17802566.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- springboot~3.x项目中使用集成测试
- Java测试类、工具类与JavaBean对比解析
- SpringBoot-日志
- springboot~http2的支持
- 解疑释惑 - 日志体系之 slf4j + logback 组合(一)
- Web server failed to start. Port 8080 was already in use. 端口被占用
- Springboot 项目配置多数据源
- 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 05
- 剑指offer-23、搜索⼆叉树的后序遍历序列
- 一个表示金额的数字是 100000000L,这是多少米?