已解决
使用多线程实现批处理过程
来自网友在路上 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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!