问题描述
- 一个web项目并发问题。
-
有一次面试被问到一个并发问题:
如果两个人同时竞价,在几乎同时点击竞价按钮的时候,这个web应用程序是如何做出判断到底谁先做出竞价的?
解决方案
我简述一下我的个人观点:
两个人同时点击竞价按钮,向WEB发送请求时:
首先,网络情况是不一样的,谁的请求先发送到服务器,自然服务器认为谁先做出竞价。
其次,假设请求又刚好同时到达服务器,那么自然是谁先拿到Lock就是谁先做出竞价。
有可能同时拿到Lock吗?
对于单CPU来说,没有可能,通过操作系统原理我们得知:
多进程及多线程其实也不过是通过不停切换CPU在各进程(线程)来实现的。
也 就是同一个瞬间,CPU只能做一件事。
希望我的观点对你有帮助。
解决方案二:
这个是涉及到并发的问题了,,同时发出请求的话,,总有一个谁先谁慢的
解决方案三:
先判断是否两个人都提交的数据合法成功了,然后就是可以客户端上提交的时候带上自己的时间戳等,不过要记得加密等,不让人破解,这样服务器端可以根据这个来判断
解决方案四:
我想应该是用数据库中的数据锁来解决
解决方案五:
我想应该是用数据库中的数据锁来解决
时间: 2025-01-31 01:40:26