社区
Java EE
帖子详情
关于并发访问的数据同步问题
muqingren1978
2011-02-25 09:28:58
我现在准备做一个影院售票系统
现在就并发访问的数据同步问题很是头疼,不知道怎么做才最好,来坛子像各位朋友求助,希望多给建议,谢谢
场景描述:
A、B两个售票终端,售票流程是先锁定座位,然后再售出座位。A端口和B端口同时售票时,我想用同步方法在业务流进行锁定,但是效率很低啊,耗时至少是没用同步锁的5倍,朋友们有没有更好的办法?数据库锁会不会效率高些?
谢谢,我没有分了,就70分了,全部散了吧
...全文
295
35
打赏
收藏
关于并发访问的数据同步问题
我现在准备做一个影院售票系统 现在就并发访问的数据同步问题很是头疼,不知道怎么做才最好,来坛子像各位朋友求助,希望多给建议,谢谢 场景描述: A、B两个售票终端,售票流程是先锁定座位,然后再售出座位。A端口和B端口同时售票时,我想用同步方法在业务流进行锁定,但是效率很低啊,耗时至少是没用同步锁的5倍,朋友们有没有更好的办法?数据库锁会不会效率高些? 谢谢,我没有分了,就70分了,全部散了吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
35 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
paneyjiang
2011-04-07
打赏
举报
回复
妈呀这也可以得40分
muqingren1978
2011-03-28
打赏
举报
回复
[Quote=引用 33 楼 fulong258 的回复:]
进入事务模式,COMMIT提交更新请求,如果执行成功则返回成功状态,如果失败就会ROLLBACK,回滚到执行前状态
[/Quote]
非常感谢,给分结贴
0轰隆隆0
2011-03-25
打赏
举报
回复
[Quote=引用 32 楼 muqingren1978 的回复:]
太感谢了
因为我要做一个售票系统,所以我应该用悲观锁才行的吧?
实话实说,我还是不太想锁表,我怕出个异常啥的就废了
[/Quote]
进入事务模式,COMMIT提交更新请求,如果执行成功则返回成功状态,如果失败就会ROLLBACK,回滚到执行前状态
jippo08456
2011-03-24
打赏
举报
回复
不用锁吧 给座位一个是否售出的状态 售出的时候同步一下此状态
muqingren1978
2011-03-24
打赏
举报
回复
[Quote=引用 25 楼 fulong258 的回复:]
在业务层加锁不可取
现在主流的数据库都支持事务模式,加上悲观锁,更高级的不但有表锁定,还有行锁定
使用COMMIT和ROLLBACK就可以了,没有必要那么麻烦!根据返回执行状态判断是否提交成功!
金融级别的如ATM取款机的处理方式也不外乎这些
[/Quote]
谢谢,但我的数据库是MySQL的,这个性能是不是还不如用synch***关键字呢?
muqingren1978
2011-03-24
打赏
举报
回复
[Quote=引用 27 楼 qm4050 的回复:]
如果是B/S ,Oracle的话,用数据库锁吧,它本身就有这个功能了。它有行级锁和表级锁,可以满足需要了
[/Quote]
我的数据库是MySQL,用数据库锁是不是效率很低下啊????
muqingren1978
2011-03-24
打赏
举报
回复
[Quote=引用 31 楼 fulong258 的回复:]
不会的,MYSQL数据库,你要设置为InnoDB,不然不支持事务模式!对于效率的话,那就是鱼和熊掌,每个数据库……
[/Quote]
太感谢了
因为我要做一个售票系统,所以我应该用悲观锁才行的吧?
实话实说,我还是不太想锁表,我怕出个异常啥的就废了
0轰隆隆0
2011-03-24
打赏
举报
回复
[Quote=引用 28 楼 muqingren1978 的回复:]
引用 27 楼 qm4050 的回复:
如果是B/S ,Oracle的话,用数据库锁吧,它本身就有这个功能了。它有行级锁和表级锁,可以满足需要了
我的数据库是MySQL,用数据库锁是不是效率很低下啊????
[/Quote]
不会的,MYSQL数据库,你要设置为InnoDB,不然不支持事务模式!对于效率的话,那就是鱼和熊掌,每个数据库都一样,包括Oracle,MSSQL等等!不推荐在业务层同步控制!如果程序有BUG,全盘都会当掉,效率要远远低
qm4050
2011-03-19
打赏
举报
回复
如果是B/S ,Oracle的话,用数据库锁吧,它本身就有这个功能了。它有行级锁和表级锁,可以满足需要了
0轰隆隆0
2011-03-14
打赏
举报
回复
在业务层加锁不可取
现在主流的数据库都支持事务模式,加上悲观锁,更高级的不但有表锁定,还有行锁定
使用COMMIT和ROLLBACK就可以了,没有必要那么麻烦!根据返回执行状态判断是否提交成功!
金融级别的如ATM取款机的处理方式也不外乎这些
经常在黑云中出没
2011-03-14
打赏
举报
回复
[Quote=引用 18 楼 bao110908 的回复:]
如果并发量很高,那就得使用数据库级别的悲观锁。如果并发量只是突然并不是经常发生的话,可以使用数据版本号式的乐观锁。
[/Quote]
这个说得很好
muqingren1978
2011-03-14
打赏
举报
回复
并发和并发性能这块,还希望有更多的资料出现,谢谢
muqingren1978
2011-03-14
打赏
举报
回复
[Quote=引用 19 楼 cl61917380 的回复:]
http://www.blogjava.net/loocky/archive/2006/11/15/81138.html
mark!
[/Quote]
这个资料很好,结贴时一定给分
muqingren1978
2011-03-14
打赏
举报
回复
[Quote=引用 17 楼 dracularking 的回复:]
锁不仅提供了对写操作的排他性,(就是在一个线程对数据进行写操作的时候,不允许其他线程同时对同一数据进行写操作),也阻止或控制了对未完成修改的数据的读操作,也叫作未提交数据。也就是写前可读,写中不可读,写完可读;读前可写,读中不可写(我不清楚有没有读中概念,如果读是一个原子操作的话,就没有读中概念,也不存在读中不可写的问题),读完可写。
再看下具体操作
http://www.cnblogs.……
[/Quote]
非常感谢,结贴时一定给分
dracularking
2011-03-09
打赏
举报
回复
锁不仅提供了对
写操作
的
排他性
,(就是在一个线程对数据进行写操作的时候,不允许其他线程同时对同一数据进行写操作),也阻止或控制了对未完成修改的数据的
读操作
,也叫作未提交数据。也就是写前可读,写中不可读,写完可读;读前可写,读中不可写(我不清楚有没有读中概念,如果读是一个原子操作的话,就没有读中概念,也不存在读中不可写的问题),读完可写。
再看下具体操作
http://www.cnblogs.com/lingmaozhijia/articles/1339222.html
paneyjiang
2011-03-09
打赏
举报
回复
这样看可以解决不:你肯定有一张表来存储你的票资源,如果是采用的oracle数据库的话,解决方法:当你要买这张票的时候,先锁定这张票,select card from filemcard where carno='当前要买的票' for update,
然后进行你后面的其他操作,这样,当你锁定了这样卡后,其他窗口就不会再来买这张票了
这样操作应该可以解决吧,希望对你有帮助
ilrxx
2011-03-09
打赏
举报
回复
数据库分为行锁和表锁,行锁一般都是for update,在事务中执行。保证事务原子性的
muqingren1978
2011-03-09
打赏
举报
回复
没人啊?问给谁啊?
coooliang
2011-03-09
打赏
举报
回复
http://www.blogjava.net/loocky/archive/2006/11/15/81138.html
mark!
火龙果被占用了
2011-03-09
打赏
举报
回复
如果并发量很高,那就得使用数据库级别的悲观锁。如果并发量只是突然并不是经常发生的话,可以使用数据版本号式的乐观锁。
加载更多回复(11)
大
数据
量下高
并发
同步
的解决方案
大
数据
量下高
并发
同步
的讲解(不看,保证你后悔) 对于我们开发的网站,如果网站的
访问
量非常大的话,那么我们就需要考虑相关的
并发
访问
问题
了。而
并发
问题
是绝大部分的程序员头疼的
问题
, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的
并发
和
同步
吧。 为了更好的理解
并发
和
同步
,我们需要先明白两个重要的概念:
同步
和异步 1、
同步
和异步的区别
并发
和
同步
并发
与
同步
概念
并发
并发
:在同一时刻,有多个线程同时
访问
某一个(一些)资源,带来
数据
的不安全性 、不稳定性、不确定性。 生活中例子 下课时,多个同学同时抢占同一坑位。
同步
同步
:用于解决
并发
问题
,给予线程权限,允许具有权限的线程执行。 实现
同步
方法-锁 锁 性质:唯一(static) 使用原则:锁越少越好 ,避免死锁发生 实现方法: 1.synchronized 2.Lock Condition 3.synchronized 方法名() {} :锁就是当前对象 生活中例子 坑位有锁,需锁开启
java web开发高
并发
系列之——大
数据
量下高
并发
同步
的讲解
对于我们开发的网站,如果网站的
访问
量非常大的话,那么我们就需要考虑相关的
并发
访问
问题
了。而
并发
问题
是绝大部分的程序员头疼的
问题
, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的
并发
和
同步
吧。 为了更好的理解
并发
和
同步
,我们需要先明白两个重要的概念:
同步
和异步 1、
同步
和异步的区别和联系 所谓
同步
,可以理解为在执行完一个函数或...
大
数据
量下高
并发
同步
的讲解(不看,保证你后悔)
对于我们开发的网站,如果网站的
访问
量非常大的话,那么我们就需要考虑相关的
并发
访问
问题
了。而
并发
问题
是绝大部分的程序员头疼的
问题
, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的
并发
和
同步
吧。 为了更好的理解
并发
和
同步
,我们需要先明白两个重要的概念:
同步
和异步 1、
同步
和异步的区别和联系 所谓
同步
,可以理解为在执行完一个函数或
多线程与
并发
- 多线程
访问
同步
方法的7种情况
不啰嗦,我们直接开始! 1、两个线程同时
访问
一个对象的
同步
方法 代码: public class SynchronizedObjectMethod implements Runnable { static SynchronizedObjectMethod instance = new SynchronizedObjectMethod(); @Override public void run() { method(); } public sy
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章