当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 191891提问 提问时间:2023-09-24 18:09:21阅读次数: 91

最佳答案 问答题库918位专家为你答疑解惑

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

import java.util.concurrent.CountDownLatch;public class BatchProcessing {public static void main(String[] args) {int[] data = new int[100];for (int i = 0; i < 100; i++) {data[i] = i;}int batchSize = 10;int numThreads = data.length / batchSize;CountDownLatch latch = new CountDownLatch(numThreads);for (int i = 0; i < numThreads; i++) {int startIndex = i * batchSize;int endIndex = Math.min((i + 1) * batchSize, data.length);Runnable task = new BatchProcessor(data, startIndex, endIndex, latch);Thread thread = new Thread(task);thread.start();}try {latch.await(); // 等待所有线程完成} catch (InterruptedException e) {e.printStackTrace();}System.out.println("All threads have completed.");}
}class BatchProcessor implements Runnable {private int[] data;private int startIndex;private int endIndex;private CountDownLatch latch;public BatchProcessor(int[] data, int startIndex, int endIndex, CountDownLatch latch) {this.data = data;this.startIndex = startIndex;this.endIndex = endIndex;this.latch = latch;}@Overridepublic void run() {for (int i = startIndex; i < endIndex; i++) {System.out.println("Data: " + data[i]);}latch.countDown(); // 通知主线程任务已完成}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"使用多线程实现批处理过程":http://eshow365.cn/6-12916-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!