版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25958497/article/details/82691182
利用Redis incr,incrBy 实现 高并发 秒杀抢单Demo 基础思路
incr,incrBy都是原子操作并发安全
System.err.println(Thread.currentThread().getName()+"开始执行!");
int j=1000*10-1;
int c=10000 * 10;
for (int i = 0; i <c ; i++) {
/**
* 控制成功下单数量
*/
if (RedisUtil.incr(key_name) <= j) {
// 添加到购物车
// 下单可能会失败 这里成功几率为10%
if ((int) (Math.random() * 9 + 1) == 9) {
try {
System.err.println("-------------下单成功");
RedisUtil.incr(key_count);//记录成功数量
} catch (Exception e) {
// TODO: handle exception
RedisUtil.incrBy(key_name, -1);
}
} else {
RedisUtil.incrBy(key_name, -1);
System.err.println("-------------下单失败");
}
} else {
RedisUtil.incrBy(key_name, -1);
System.err.println("抢单失败");
}
}
System.err.println(Thread.currentThread().getName()+"执行完毕!");
如觉得有不正确的地方,请在下方留言
已经在200个线程,并发测试没问题!!!