import java.util.ArrayList;
import java.util.List;import org.apache.commons.lang3.ArrayUtils;public class Test_4 { /** * 多线程处理list * * @param data 数据list * @param threadNum 线程数 */ public synchronized void handleList(List<string> data, int threadNum) {</string> int length = data.size(); int tl = length % threadNum == 0 ? length / threadNum : (length / threadNum + 1); for (int i = 0; i < threadNum; i++) { int end = (i + 1) * tl; HandleThread thread = new HandleThread("线程[" + (i + 1) + "] ", data, i * tl, end > length ? length : end); thread.start(); } } class HandleThread extends Thread { private String threadName; private List<string> data;</string> private int start; private int end; public HandleThread(String threadName, List<string> data, int start, int end) {</string> this.threadName = threadName; this.data = data; this.start = start; this.end = end; } public void run() { // TODO 这里处理数据 data.subList(start, end).add("^&*"); System.out.println(threadName) } } public static void main(String[] args) { Test_4 test = new Test_4(); // 准备数据 List<string> data = new ArrayList<string>();</string></string> for (int i = 0; i < 5000; i++) { data.add("item" + i); } test.handleList(data, 5); System.out.println(ArrayUtils.toString(data)); }}

本文介绍了一种使用多线程高效处理大型List的方法。通过将数据均匀分配给多个线程,实现并行处理,显著提高了处理速度。文章详细解释了如何计算每个线程的数据范围,并提供了完整的Java代码示例。
676

被折叠的 条评论
为什么被折叠?



