• 使用多线程实现批处理过程


    使用多线程实现批处理过程,将一下数组,按10个一组,每组一个打印数据,并在19个线程都处理完成后输出打印次数 int[]data = new int [100]; for(int i=0;i <100;i++){data[i] =i;}

    1. import java.util.concurrent.CountDownLatch;
    2. public class BatchProcessing {
    3. public static void main(String[] args) {
    4. int[] data = new int[100];
    5. for (int i = 0; i < 100; i++) {
    6. data[i] = i;
    7. }
    8. int batchSize = 10;
    9. int numThreads = data.length / batchSize;
    10. CountDownLatch latch = new CountDownLatch(numThreads);
    11. for (int i = 0; i < numThreads; i++) {
    12. int startIndex = i * batchSize;
    13. int endIndex = Math.min((i + 1) * batchSize, data.length);
    14. Runnable task = new BatchProcessor(data, startIndex, endIndex, latch);
    15. Thread thread = new Thread(task);
    16. thread.start();
    17. }
    18. try {
    19. latch.await(); // 等待所有线程完成
    20. } catch (InterruptedException e) {
    21. e.printStackTrace();
    22. }
    23. System.out.println("All threads have completed.");
    24. }
    25. }
    26. class BatchProcessor implements Runnable {
    27. private int[] data;
    28. private int startIndex;
    29. private int endIndex;
    30. private CountDownLatch latch;
    31. public BatchProcessor(int[] data, int startIndex, int endIndex, CountDownLatch latch) {
    32. this.data = data;
    33. this.startIndex = startIndex;
    34. this.endIndex = endIndex;
    35. this.latch = latch;
    36. }
    37. @Override
    38. public void run() {
    39. for (int i = startIndex; i < endIndex; i++) {
    40. System.out.println("Data: " + data[i]);
    41. }
    42. latch.countDown(); // 通知主线程任务已完成
    43. }
    44. }

  • 相关阅读:
    前端设计模式
    深入理解 Srping IOC
    用Python Pygame做的一些好玩的小游戏
    LeetCode(剑指 Offer)- 25. 合并两个排序的链表
    mlops产品调研方案
    微信小程序项目源代码SSM英语学习平台
    Opencv进行图像处理基础模板
    Visual Studio Code使用
    SAP MD04 MRP元素显示中文(TCODE:OMD5)
    99. 激光炸弹(二维前缀和)
  • 原文地址:https://blog.csdn.net/mywaya2333/article/details/133205546