1、在代码里面先生成记录,然后入队列,这样子不会造成多个线程都生成了记录,但是最终不一定所有生成记录的线程都能够进入队列中吗?
2、还有一个问题,在程序运行结束后,控制台显示的是用户0-100都秒杀成功,按理说数据库应该是有101条秒杀记录,但是实际上只有100条记录,用户100虽然在控制台显示秒杀成功,但是并没有真正的生成面杀记录,不知道是为什么?
1)不是先生成记录,那个只是个参数 2)打印问题,已修复
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
@小柒2012 为什么会出现程序提示用户100秒杀成功,但是数据库只有100条记录,说一下我的看法,不知道对不对 1、这是因为在生产任务的过程中,消费者线程也在消费任务,消费者拿到第一个任务开始执行后, 2、此时队列中容量为99,所以还会有一个任务入队列,所以有队列任务+正在消费的任务 ==> 100+1 = 101 3、但是数据库中实际商品数量只有100,也只会生成100条记录
嗯,你说得对,你看下消费哪里,已经做了逻辑更改。
@小柒2012 这个测试接口出现的问题,好像是在com.itstyle.seckill.queue.jvm.TaskRunner这个类下面出现的,没有看到你修改这个类啊
@小柒2012 还有就是不知道为什么在用kafka或者activeMQ的时候,总是会报空指针异常,异常发生的地方应该是 com.itstyle.seckill.common.redis.RedisUtil 这个类下面的 redisTemplate没有注入,代码里面是按照 Resource 注解注入的也不行
登录 后才可以发表评论