问题描述
- java 多用户线程同步锁
-
SSM 框架做一个用户取钱的业务,为了防止一个用多端同时取钱, 可以再业务方法前加上synchronized 是方法变成同步方法,每一个请求经过这个业务方法是只能同步等待,
但是如果有很多个用户同时取钱呢(,本来不同的用户取钱时不会相互影响的,) 如果这样做就会降低程序的执行效率, 请问谁知道怎么做?
解决方案
线程锁的时间可以忽略不计吧?有确切测试证明会影响用户使用吗?
解决方案二:
首先,Java web请求处理是多线程的,即每个请求都是由一个线程来处理的,多用户同时访问同一个请求时,也是在各自线程中的,如果线程同步使用的锁用synchronized同步非静态方法的话,那么锁监视器就是当前对象this。
你说的多个用户同时取钱,各自用自己的锁对象的话,应该不能相互影响的吧。
解决方案三:
当用户量达到百万时,同一时刻达到一万访问这个方法如果还是同步锁的话 那就有意思了
解决方案四:
当用户量达到百万时,同一时刻访问达到一万,加同步锁有卡的要死的情况,还不做集群吗。
解决方案五:
毕小宝 正解,顶一下
解决方案六:
你这个不应该在java中锁,而应该在数据库中.
数据库会帮你解决数据一致问题,只要合理使用了事务.
begin work
减余额
读余额
余额未负,rollback
返回取钱后的新余额
commit work
如果在java中,你能保证只有一台应用服务器吗?
多台的话,你还要加分布式锁!
解决方案七:
db锁账户记录吧。
否则集群操作无解了 ....
时间: 2024-11-16 22:04:12