@Autowired
private UserMapper userMapper
@Autowired
private UserService userService
/**
* 生成10万个User
*/
private List<User> generateUsers(int start ,int end) {
List<User> users = new ArrayList<>(end-start+1)
for (int i = start
User user = new User()
user.setId((long) i)
user.setGender(GenderEnum.MALE)
user.setName("张三" + i)
user.setAge(20)
user.setEmail("哈哈哈@qq.com")
user.setCreateTime(LocalDateTime.now())
users.add(user)
}
return users
}
/**
* 添加用户
*/
@PostMapping("/add1")
public String add1() {
userService.remove(null)
String time=null
List<User> users1 = generateUsers(0,99999)
List<User> users2 = generateUsers(100000,199999)
List<User> users3 = generateUsers(200000,299999)
System.out.println("users.size() = " + users1.size())
//开始时间
long start = System.currentTimeMillis()
userService.saveBatch(users1)
//结束时间
long end = System.currentTimeMillis()
System.out.println("耗时1:" + (end - start) + "ms")
time="耗时1:" + (end - start) + "ms"
//开始时间
long start1 = System.currentTimeMillis()
//用CompletableFuture.runAsync()来异步执行任务并返回CompletableFuture
Util.splitList(users2, 2000).stream().map(e->CompletableFuture.runAsync(()->
userService.saveBatch(e))).collect(Collectors.toList())
.forEach(CompletableFuture::join)
//结束时间
long end1 = System.currentTimeMillis()
System.out.println("耗时2:" + (end1 - start1) + "ms")
time=time+" 耗时2:" + (end1 - start1) + "ms"
//开始时间
long start2 = System.currentTimeMillis()
Util.splitList(users3, 1000).parallelStream().forEach(userService::saveBatch)
//结束时间
long end2 = System.currentTimeMillis()
System.out.println("耗时3:" + (end2 - start2) + "ms")
time=time+" 耗时3:" + (end2 - start2) + "ms"
return time
}

