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)); }}