怎么用java多线程统计数据

avatar
作者
猴君
阅读量:3

使用多线程可以加快数据统计的速度,以下是一种使用Java多线程进行数据统计的示例:

import java.util.ArrayList; import java.util.List; import java.util.Random;  public class DataStatistics {      public static void main(String[] args) {         int[] data = generateData(1000000); // 生成100万个随机数作为数据          int threadCount = 4; // 设置线程数量         List<Worker> workers = new ArrayList<>();          // 创建并启动多个Worker线程         for (int i = 0; i < threadCount; i++) {             Worker worker = new Worker(data, i * (data.length / threadCount), (i + 1) * (data.length / threadCount));             workers.add(worker);             worker.start();         }          // 等待所有Worker线程执行完毕         for (Worker worker : workers) {             try {                 worker.join();             } catch (InterruptedException e) {                 e.printStackTrace();             }         }          // 统计每个Worker线程的结果并求和         int totalCount = 0;         for (Worker worker : workers) {             totalCount += worker.getResult();         }          System.out.println("数据总和为:" + totalCount);     }      // 随机生成指定数量的数据     private static int[] generateData(int count) {         int[] data = new int[count];         Random random = new Random();         for (int i = 0; i < count; i++) {             data[i] = random.nextInt(100);         }         return data;     }      // Worker线程用于统计数据的子任务     private static class Worker extends Thread {         private int[] data;         private int start;         private int end;         private int result;          public Worker(int[] data, int start, int end) {             this.data = data;             this.start = start;             this.end = end;         }          public int getResult() {             return result;         }          @Override         public void run() {             for (int i = start; i < end; i++) {                 result += data[i];             }         }     } } 

在上述示例中,首先生成了100万个随机数作为数据。然后,根据指定的线程数量创建了多个Worker线程,每个Worker线程负责统计数据的一部分。每个Worker线程在run()方法中进行计算,并将结果保存在result变量中。最后,主线程等待所有Worker线程执行完毕后,将每个Worker线程的结果相加得到最终的统计结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!