java 线程

import org.springframework.util.CollectionUtils;

List<List<User>> lists = new ArrayList<>();

//查询业务数据

List<User> userList = dao.queryData();

try {

lists = averageAssign(userList, 10000);

if(!CollectionUtils.isEmpty(lists)) {

lists.foreach(o -> {

new Thread(() -> {

try {

taskCommon(o);

} catch (Exception e) {

}

}).start();

});

}

} catch(Exception e) {

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

}finally {

lists.clear();

}

public synchronized void taskCommon(List<User> list) {

//业务处理

}

import org.springframework.util.CollectionUtils;

import java.util.List;

import java.util.stream.Collectors;

import java.util.stream.Stream;

public static<T> List<List<T>> averageAssign(List<T> source, int size) {

if(!CollectionUtils.isEmpty(source) && size > 0) {

int num = source.size() % size == 0 ? source.size() / size : (source.size() / size)+1;

return Stream.iterate(0, n -> n + 1).limit(num).parallel().map(a -> source.parallelStream().skip(a * size).limit(size).collect(Collectors.toList())).filter(b -> !b.isEmpty()).collect(Collectors.toList());

}

return null;

}

相关推荐
SimonKing几秒前
拯救大文件上传:一文彻底彻底搞懂秒传、断点续传以及分片上传
java·后端·架构
深栈解码几秒前
JUC并发编程 内存布局和对象头
java·后端
北方有星辰zz14 分钟前
数据结构:栈
java·开发语言·数据结构
Seven9715 分钟前
一个static关键字引发的线上故障:深度剖析静态变量与配置热更新的陷阱
java
山野万里__17 分钟前
C++与Java内存共享技术:跨平台与跨语言实现指南
android·java·c++·笔记
风象南19 分钟前
Spring Shell命令行工具开发实战
java·spring boot·后端
Java技术小馆23 分钟前
POST为什么发送两次请求
java·面试·架构
天天摸鱼的java工程师24 分钟前
MySQL表设计实战指南:从业务场景到表结构优化
java·后端·mysql
SimonKing27 分钟前
Java处理PDF就靠它!Apache PDFBox:开源免费的PDF全能王
java·后端·程序员
天天摸鱼的java工程师30 分钟前
Java与AI:从业务场景到代码实现,构建人工客服系统实战
java·后端·面试