属于1.8特性,允许多线程接收数据解决数据量大线程阻塞问题
同时可以用Callable来实现多线程,相对于thread和runable可以返回数据
ExecutorService executorService = Executors.newFixedThreadPool(5);
//用户信息
Callable<Appuser> userInfoCallable = () -> appuserService.getById(userId);
//关注数量
Callable<Long> careCountCallable = () -> appUserCareService.count(new QueryWrapper<AppUserCare>().eq("appuser_id", userId));
//解锁数量
Callable<Long> blockCallable = () -> dynamicBlockRecordService.count(new QueryWrapper<DynamicBlockRecord>().eq("appuser_id", userId));
//订阅数量(粉丝团和专属会员)
Callable<Long> subscribeCallable = () -> appUserFunService.getFunUserVipCount(userId);
//点赞收藏
Callable<Long> likeCountCallable = () -> appUserLikeService.getLikeCollectCount(userId);
FutureTask<Appuser> userInfoTask = new FutureTask<>(userInfoCallable);
FutureTask<Long> careCountTask = new FutureTask<>(careCountCallable);
FutureTask<Long> blockCountTask = new FutureTask<>(blockCallable);
FutureTask<Long> subscribeTask = new FutureTask<>(subscribeCallable);
FutureTask<Long> likeCountTask = new FutureTask<>(likeCountCallable);
executorService.submit(userInfoTask);
executorService.submit(careCountTask);
executorService.submit(blockCountTask);
executorService.submit(subscribeTask);
executorService.submit(likeCountTask);
Map<String, Object> entity = new HashMap<>();
entity.put("userInfo", new Appuser());
entity.put("likeCount", 0);
entity.put("careCount", 0);
entity.put("blockCount", 0);
entity.put("subscribeCount", 0);
try {
entity.put("userInfo", userInfoTask.get());
entity.put("likeCount", likeCountTask.get());
entity.put("careCount", careCountTask.get());
entity.put("blockCount", blockCountTask.get());
entity.put("subscribeCount", subscribeTask.get());
} catch (Exception e) {
e.printStackTrace();
} finally {
executorService.shutdown();
}
参考学习:https://blog.csdn.net/m0_37202351/article/details/82763303
参考学习:https://blog.csdn.net/u014209205/article/details/80598209
参考学习:https://blog.csdn.net/weixin_42606135/article/details/81282736