集合指定分组异步执行
先集合分组,指定分组后分批执行
@Test
public void testList() {
List strings = Arrays.asList("1", "2", "3", "4");
List> lists = averageGrouping(strings, 3);
List strings1 = lists.get(0);
new Thread(() -> {
doSomething(strings1);
}).start();
List strings2 = lists.get(1);
new Thread(() -> {
doSomething(strings2);
}).start();
List strings3 = lists.get(2);
new Thread(() -> {
doSomething(strings3);
}).start();
}
public void doSomething(List sou) {
for (String s : sou) {
System.out.println(Thread.currentThread().getName() + "结果" + s);
}
}
public static List> averageGrouping(List souce, int n) {
List> result = new ArrayList<>();
int remainder = souce.size() % n;
int number = souce.size() / n;
int offset = 0;
for (int i = 0; i < n; i++) {
List value = null;
if (remainder > 0) {
value = souce.subList(i * number + offset, (i + 1) * number + offset + 1);
remainder--;
offset++;
} else {
value = souce.subList(i * number + offset, (i + 1) * number + offset);
}
result.add(value);
}
return result;
}



