社区
Web 开发
帖子详情
库存只剩一件衣服,2个用户同分同秒下单,到底谁能买到这件衣服?
function_chk
2014-04-02 02:56:35
最近在做一项目,遇到这个问题不知如何处理。。。
库存只剩一件衣服,这时候2个用户同分同秒下单,到底谁能买到这件衣服?
...全文
1449
35
打赏
收藏
库存只剩一件衣服,2个用户同分同秒下单,到底谁能买到这件衣服?
最近在做一项目,遇到这个问题不知如何处理。。。 库存只剩一件衣服,这时候2个用户同分同秒下单,到底谁能买到这件衣服?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
35 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
villagehead
2014-04-04
打赏
举报
回复
首先解释一下“同时”, 在颗粒度足够细的条件下, 是没有同时的概念的。 总会有一个先操作,一个后操作。 如果是直接写sql, 处理这样有抢占的数据处理, 标准sql在select中有个for update的关键字。 第2个来访问该条数据的程序会被挂起。 等第一个执行完了再操作。 不过在数据库层面只是挂起。 不能立刻报错, 或者设置挂起时间,超时了报错。 oracle在这个关键字之后,还有个“nowait”的关键字, 就是第2个访问者访问到被“for update nowait”的数据, 就会立即返回一个ORA-XXXX的错误码给程序。 lz可以参考一下 不过这都是老黄历了, 现在有没有更先进的,或者更方便的调用我就不得而知了。 good luck
momoyssy
2014-04-04
打赏
举报
回复
看人品呗,在客户端同时(就算是精确到毫秒)这种情况是存在的,因为是允许多人操作,但是到了后台处理,就会有个先后了(CPU总是会分个先后的,就看CPU更喜欢谁了)。如果楼主想问怎么处理这种情况,用同步呗(具体操作请参考其他高手的回答)。
s041738
2014-04-04
打赏
举报
回复
你要做这个商业订单系统,肯定要用到数据库,而数据库中比如mysql有 行级锁定, 比如你那一件只剩库存1的占用行的id=1(一个ID代表一个衣服种类,唯一标识) 那么当客户下订单时会把id=1的这一品种的衣服锁定,后面来的用户都必须等待前一个客户操作完(即库存量-1的操作)。等前一个客户操作完后,释放锁让后面的客户下单,当后一位进入时,你再判断库存就可以防止幽灵变量了。
chen870201
2014-04-03
打赏
举报
回复
排队机制不弄不行
sunylf
2014-04-03
打赏
举报
回复
学习.........
java_caoxing
2014-04-03
打赏
举报
回复
确实。。看人品。。看机器配置
panshoup
2014-04-03
打赏
举报
回复
引用 9 楼 benluobobo 的回复:
这个问题你应该问CPU
看cpu看人品 这事
机器学习之禅
2014-04-03
打赏
举报
回复
同步锁 添加随机一个判定值
火龙岛主
2014-04-03
打赏
举报
回复
有人品的,就判断一下客户的购买力,历史交易记录什么的,使用其他内容作参考。 无人品的,random好了。
专注or全面
2014-04-03
打赏
举报
回复
抢的前提是存在数据,如何判断存在数据,如何处理数据才是关键 说线程啊什么玩意的都是不沾边的方法,15楼说的是一个思路,关键在数据 数据在哪里?正常情况下都存储在数据库中的吧, 说白了就是看你如何对数据进行抢占式处理吗 参考这个
http://www.windbi.com/showtopic-120254.aspx
gbwl_cgl
2014-04-03
打赏
举报
回复
总是会有先后的,如果觉得不放心,使用线程锁撒
xiejin90314
2014-04-03
打赏
举报
回复
谁先付钱就是谁的。。不给钱拿在手里买你毛用
forwin
2014-04-03
打赏
举报
回复
这个要看谁先LOCK
AngelWings
2014-04-03
打赏
举报
回复
网速快的那个能买到!
liangchengfck1
2014-04-03
打赏
举报
回复
synchronized 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
volte
2014-04-03
打赏
举报
回复
这是共享资源分配的问题!没那么复杂吧
lan120576664
2014-04-03
打赏
举报
回复
伟大的天国有这么例子,你就学一下吧。 什么东西都摇号....... 你也可以搞个"摇号"
Spring89
2014-04-02
打赏
举报
回复
你认为这问题,你想自已处理分配给某个用户,这样好吗?我认为不好,给了第一个用户,第二个用户不给,为什么?甚至还有N多用户!这时候,就看哪个用户先抢占CPU,线程有先后顺序!该轮到谁就轮谁。
C-J
2014-04-02
打赏
举报
回复
不是有线程锁的么
rmengshu
2014-04-02
打赏
举报
回复
synchronized{}把方法写在同步锁中。
加载更多回复(13)
浅谈16个激发
用户
购
买
欲的网站策划技巧
无论你是做淘客站,还是销售产品的网站,唯一的目标就是让浏览你网站上的
用户
去花钱。于是很多人开始费劲心机来提升网站的流量,也知道了流量转化率的重要性,所以在网站的运营上,就一切以提升流量和流量转化率为核心,可是经过一段时间的总结之后,依然发现好几千的流量,每天的成交订单却屈指可数!那
到底
是什么原因阻碍了成交量呢...
并发程序设计,你真的懂吗?
但是现在相对来说网购是不是已经非常的方便了,假如你媳妇逛淘宝,忽然看到一个非常漂亮的
衣服
,那是不是该你表现一波了,这时候,你去把商品添加到购物车,然后直接
下单
,只需要半天不到,你就能穷送那倒货物了,而在这时候你就可以有充足的时间再去干点别的事情,比如,你可以看一篇简单的文章。同步和异步通常是用来用一次方法调用,同步方法调用一旦开始,调用者必须要等到方法调用返回之后,才能够继续后续的行为,不论行为是什么,二异步的方法调用更像是一个消息的传递,一旦开始了,方法调用就会立即的返回,调用者就可以继续后续的操作。..
并发程序设计,你真的懂吗?_并发设计,2024年最新大数据开发开发真等于废人
但是现在相对来说网购是不是已经非常的方便了,假如你媳妇逛淘宝,忽然看到一个非常漂亮的
衣服
,那是不是该你表现一波了,这时候,你去把商品添加到购物车,然后直接
下单
,只需要半天不到,你就能穷送那倒货物了,而在这时候你就可以有充足的时间再去干点别的事情,比如,你可以看一篇简单的文章。同步和异步通常是用来用一次方法调用,同步方法调用一旦开始,调用者必须要等到方法调用返回之后,才能够继续后续的行为,不论行为是什么,二异步的方法调用更像是一个消息的传递,一旦开始了,方法调用就会立即的返回,调用者就可以继续后续的操作。
淘宝话术
客服在网店经营中,是面对消费者,直接和顾客对话的这样一个角色,对于促成网店成交也有重要的影响,而且客服往往是一个不太受约束,被规则影响的角色,今天开淘小编针对淘宝客服角色常用话术问答做如下解说。 一、当“叮咚”声响起时,简单地敲一个“亲”,为的是让
买
家知道有人立即回应了,这是对
买
家的一种尊敬。回复的时候,若内容很长,可以分开回复,而不是打完一大串再回复,有的
买
家没有耐心,等辛苦地一大串回答了...
活得象个人样
看着镜子里的那张面孔,我认不出自己。公司的事情可以先放在一旁,我还要上网。网络就是我最后的家园,在离开家乡的北京,在毕业4年后的今日,我还能每天冲公司那些小妞们笑笑,就是因为这个网。和kisser有个约会,网上的约会。时间就要到了,我他妈的还没吃饭。老板是个典型的资产阶级,把我剥削的只
剩
一张皮了。最可恨的就是把我痛苦的权利也都剥夺了,只给我留下忍耐和麻木。傻丫的早晚做了他!不吃了。有点成心糟蹋自己
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章