// 如果当前这个场次的商品库存信息已经上架就不需要上架
// 5、使用库存作为分布式Redisson信号量(限流)
// 使用库存作为分布式信号量
RSemaphore semaphore = redissonClient.getSemaphore(SKU_STOCK_SEMAPHORE + token);
// 商品可以秒杀的数量作为信号量
semaphore.trySetPermits(seckillSkuVo.getSeckillCount());
}
/**
* 当前时间
* @return
*/
private String startTime() {
LocalDate now = LocalDate.now();
LocalTime min = LocalTime.MIN;
LocalDateTime start = LocalDateTime.of(now, min);
start.minusHours(8);
//格式化时间
String startFormat = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return startFormat;
}
// 如果占位成功说明买过
// 分布式信号量 减
RSemaphore semaphore = redissonClient.getSemaphore(SKU_STOCK_SEMAPHORE + randomCode);
boolean b = semaphore.tryAcquire(num, 100, TimeUnit.MILLISECONDS); // 从信号量取出来 num 取出数量 100 微秒快速尝试 不占用时间
String timeId = IdWorker.getTimeId(); // 分布式自增长ID
标签:String,start,系统,信号量,并发,秒杀,semaphore,now,分布式
From: https://blog.51cto.com/u_15993308/6482276