当一个list很大时,你是否想过进行多线程分组处理?又或者这样一个场景,你想批量处理一个数据库里的数据,里面数据是几十万,几百万条,你需要每次读1万条出来处理,而这1万数据如果一条一条顺序处理可想而知所有数据处理完所需要的时间,看下本菜鸟提供的两个分组处理方式。

public class ThreadsTest {

    public static String listToStr(List<String> list){
        StringBuffer str = new StringBuffer();
        Random random = new Random(10);
        Map<Integer,List<String>> group = list.parallelStream().collect(Collectors.groupingBy(e -> random.nextInt(100)));
        group.values().parallelStream().forEach(e -> e.forEach(str::append));
        System.out.println("method1: "+str.toString());
        return str.toString();
    }

    public static String list2Str(List<String> list, final int nThreads) throws Exception {
        if (list == null || list.isEmpty()) {
            return null;
        }

        StringBuffer ret = new