当前位置: 首页 > news >正文

并发知识笔记

一、使用线程持有变量获取线程执行结果

    /*** 线程持有变量*/private static final ThreadLocal<Map<String, Object>> MAP_THREAD_LOCAL = ThreadLocal.withInitial(HashMap::new);// ----------------------------------------------------------------正文int dataSize = data.size();// 创建线程池ExecutorService executor = Executors.newFixedThreadPool(Thread.MAX_PRIORITY);// 用于同步线程的计数器CountDownLatch latch = new CountDownLatch(THREAD_COUNT);// 计算每个线程处理的数据量int chunkSize = dataSize / THREAD_COUNT;Queue<Map<String, Object>> resultQueue = new ConcurrentLinkedQueue<>();System.out.println(dataSize + "数据量总大小");// 分块处理数据for (int i = 0; i < THREAD_COUNT; i++) {final int chunkStart = i * chunkSize;final int chunkEnd = (i == THREAD_COUNT - 1) ? dataSize : (i + 1) * chunkSize;// 提交任务到线程池executor.submit(() -> {processChunk(chunkStart, chunkEnd, data, dataBaseUtils, updateSupport);resultQueue.add(MAP_THREAD_LOCAL.get());MAP_THREAD_LOCAL.remove();latch.countDown(); // 每个线程完成后减少计数});}// 等待所有线程完成任务latch.await();// 关闭线程池executor.shutdown();

二、使用PriorityBlockingQueue<Map.Entry<Integer, Callable<Map<String, Object>>>>子线程处理部分工作,主线程最终执行某些操作并获取子线程操作结果返回值


http://www.mrgr.cn/news/6542.html

相关文章:

  • Spring父子容器
  • HarmonyOS 地图服务:深度解析其丰富功能与精准导航实力
  • kafka的一个有趣问题(BUG)
  • VS2017编译osg3.6.0和osgearth2.10
  • Java SpringBoot+Vue实战教程:如何一步步实现Cosplay论坛设计与实现
  • 自动生成依赖清单:pipreqs,Python项目的救星
  • Onnx使用预训练的 ResNet18 模型对输入图像进行分类,并将分类结果显示在图像上
  • 代码随想录训练营 Day37打卡 动态规划 part05 完全背包理论基础 518. 零钱兑换II 377. 组合总和 Ⅳ 卡码70. 爬楼梯(进阶版)
  • Notification 分不同实例关闭
  • 什么是关键词难度?
  • RISC-V全志D1多媒体套件文章汇总
  • OCR识别行驶证(阿里云和百度云)
  • Axios 中的相关参数
  • 图论 最短路
  • webrtc ns 降噪之粉红噪声参数推导
  • 我们再次陷入软件危机
  • 提高实时多媒体传输效率的三大方法
  • io进程----标准io
  • 开源AI智能名片商城小程序在私域流量运营中的转化效率与ROI提升研究
  • DM8守护集群部署、数据同步验证、主备切换