2 u010499298 u010499298 于 2016.03.18 17:02 提问

一个web项目并发问题。 2C

有一次面试被问到一个并发问题:
如果两个人同时竞价,在几乎同时点击竞价按钮的时候,这个web应用程序是如何做出判断到底谁先做出竞价的?

5个回答

dullchap
dullchap   2016.03.18 17:10

我简述一下我的个人观点:

两个人同时点击竞价按钮,向WEB发送请求时:

首先,网络情况是不一样的,谁的请求先发送到服务器,自然服务器认为谁先做出竞价。

其次,假设请求又刚好同时到达服务器,那么自然是谁先拿到Lock就是谁先做出竞价。

有可能同时拿到Lock吗?

对于单CPU来说,没有可能,通过操作系统原理我们得知:

多进程及多线程其实也不过是通过不停切换CPU在各进程(线程)来实现的。

也 就是同一个瞬间,CPU只能做一件事。

希望我的观点对你有帮助。

dullchap
dullchap 回复伍丰: 其JAVA以前针对这个问题打过一个补丁,JVM会在加锁前声明共享内存,被声明后共享内存会使得OS调度产生变化,多核CPU也不会同时访问这段共享内存,从而实现加锁过程只有一个请求能够进行
2 年多之前 回复
u010499298
u010499298 我觉得既然面试官问这个问题,应该是在问多CPU的情况下是如何处理的。还请大神再继续给讲解一下。
2 年多之前 回复
u010499298
u010499298 hi,首先谢谢,那么如果是多CPU呢?
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.03.18 17:12

这个是涉及到并发的问题了,,同时发出请求的话,,总有一个谁先谁慢的

oyljerry
oyljerry   Ds   Rxr 2016.03.18 17:55

先判断是否两个人都提交的数据合法成功了,然后就是可以客户端上提交的时候带上自己的时间戳等,不过要记得加密等,不让人破解,这样服务器端可以根据这个来判断

GuYueDream
GuYueDream   2016.03.21 11:04

我想应该是用数据库中的数据锁来解决

GuYueDream
GuYueDream   2016.03.21 11:03

我想应该是用数据库中的数据锁来解决

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决Ajax 发送多个请求引发的并发问题
该示例解决了发送多个Ajax请求时引起的并发问题
Hibernate4实战 之第五部分:Hibernate的事务和并发
Hibernate4实战 之第五部分:Hibernate的事务和并发
并发问题详述(sql)
并发问题详述 并发问题详述 并发问题详述 并发问题详述 并发问题详述
springmvc+spring线程池处理http并发请求数据同步控制问题
springmvc+spring线程池处理http并发请求数据同步控制问题
数据并发问题
数据并发问题数据并发数据并发问题问题
redis百万并发访问数据库测试需要的jar包
redis百万并发访问数据库测试需要的jar包
一个完整的java web项目 (包含数据库)
一个完整的java web项目 包括sqlserver2005数据库
架构层面高并发解决方案
Web项目,尤其是面向C端的项目,做到中后期往往要解决高并发的问题。本文通过对三种架构的并发性能分析,为这一阶段的开发和重构提供参考。
一个简单入门的JavaWeb项目
摆脱(My)Eclipse,逐步手动搭建JavaEE项目,命令行轻松编译,轻松部署到Tomcat。代码包括连接Mysql,建立Servlet;Jar包包括Mysql驱动包和Servlet包。文件内含:开发时的项目和部署后的项目。希望对下载的人有用,谢谢。
Oracle并发问题处理
Oracle并发问题处理Oracle并发问题处理