@Autowired
public RedisTemplate redisTemplate;
boolean lock = redisTemplate.opsForValue().setIfAbsent("lock", "redisLock");
// 获取锁
boolean redisLock = redis.getRedisLock();
if(redisLock){
// 创建线程池
ThreadPoolTaskExecutor threadPoolTaskExecutor = SpringUtils.getBean("threadPoolTaskExecutor");
// 创建多线程
List<CompletableFuture<Boolean>> futureAll = new ArrayList<>();
Collection<String> keys = redis.keys(CacheConstants.TRADE);
keys.forEach(key -> {
CompletableFuture future = CompletableFuture.runAsync(() -> {
fuelGunCommandService.saveOrUpdateTrade(key);
}, threadPoolTaskExecutor);
futureAll.add(future);
});
//等待全部执行完成
CompletableFuture.allOf(futureAll.toArray(new CompletableFuture[0])).join();
// 完成之后释放锁
redis.delRedisLock();
}
标签:futureAll,keys,redis,CompletableFuture,redisLock,多线程,threadPoolTaskExecutor From: https://blog.51cto.com/momo1226/9247887