List<Long> listsSelect = 查询到的list;
// 创建一个固定大小的线程池
ExecutorService executorService = Executors.newFixedThreadPool(5);
if (!CollectionUtils.isEmpty(listsSelect)) {
// 多线程按批处理
int size = listsSelect.size();
for (int i = 0; i < threadNum; i++) {
List<Long> a = new ArrayList<Long>();
for (int j = i; j < size; j += threadNum) {
a.add(listsSelect.get(j));
}
if (a != null && a.size() > 0) {
List<List<Long>> ridLists = ListUtil.splitList(a, 10);
executorService.execute(executor(ridLists));
}
}
try {
executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.HOURS);
} catch (Exception e) {
}
}
private Runnable executor(final List<List<Long>> b) {
Runnable run = new Runnable() {
@Override
public void run() {
try {
for (int i = 0; i < b.size(); i++) {
long startTime = System.currentTimeMillis();
List<Long> ridList = b.get(i);
for (int j = 0; j < ridList.size(); j++) {
//业务逻辑处理
}
long endTime = System.currentTimeMillis();
}
} catch (Exception e) {
}
}
};
return run;
}
public static <T> List<List<T>> splitList(List<T> lists, int limit) {
int size = lists.size();
List<List<T>> list = new ArrayList<List<T>>();
if (limit > size) {
list.add(lists);
return list;
}
int length = size/limit +1;
for(int i=0 ; i < length ; i ++){
List<T> subList = new ArrayList<T>();
for(int j =i ; j < size ; j += length){
subList.add(lists.get(j));
}
list.add(subList);
}
return list;
}