springmvc-java 多用户线程同步锁

问题描述

java 多用户线程同步锁

SSM 框架做一个用户取钱的业务,为了防止一个用多端同时取钱, 可以再业务方法前加上synchronized 是方法变成同步方法,每一个请求经过这个业务方法是只能同步等待,
但是如果有很多个用户同时取钱呢(,本来不同的用户取钱时不会相互影响的,) 如果这样做就会降低程序的执行效率, 请问谁知道怎么做?

解决方案

线程锁的时间可以忽略不计吧?有确切测试证明会影响用户使用吗?

解决方案二:

首先,Java web请求处理是多线程的,即每个请求都是由一个线程来处理的,多用户同时访问同一个请求时,也是在各自线程中的,如果线程同步使用的锁用synchronized同步非静态方法的话,那么锁监视器就是当前对象this。
你说的多个用户同时取钱,各自用自己的锁对象的话,应该不能相互影响的吧。

解决方案三:

当用户量达到百万时,同一时刻达到一万访问这个方法如果还是同步锁的话 那就有意思了

解决方案四:

当用户量达到百万时,同一时刻访问达到一万,加同步锁有卡的要死的情况,还不做集群吗。

解决方案五:

毕小宝 正解,顶一下

解决方案六:

你这个不应该在java中锁,而应该在数据库中.

数据库会帮你解决数据一致问题,只要合理使用了事务.

begin work
减余额
读余额
余额未负,rollback
返回取钱后的新余额
commit work

如果在java中,你能保证只有一台应用服务器吗?
多台的话,你还要加分布式锁!

解决方案七:

db锁账户记录吧。
否则集群操作无解了 ....

时间: 2024-11-16 22:04:12

springmvc-java 多用户线程同步锁的相关文章

java关于线程同步的问题

问题描述 java关于线程同步的问题 package 线程.TestTeread_5; /* push和pop增加减少数组元素, 我的问题是: 为什么去掉push和pop的synchronized修饰关键词时,会报如下错误 异常: Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.notify(Native Method) at 线程.TestTeread_

java中线程同步,线程让步,线程休眠的区别和联系是什么

问题描述 java中线程同步,线程让步,线程休眠的区别和联系是什么 java中线程同步,线程让步,线程休眠的区别和联系是什么 线程的本质还是一个运行中的类, 解决方案 线程同步:是保证多线程安全访问竞争资源的一种手段,java中常用的是加锁机制即synchronized同步代码块实现的. 线程让步的方法是yield(),休眠方法是sleep().sleep()方法和yield()方法都是Thread类的静态方法,都会使当前处于运行状态的线程放弃CPU,把运行机会让给别的线程. 两者的区别在于:s

解析Java线程同步锁的选择方法_java

在需要线程同步的时候如何选择合适的线程锁?例:选择可以存入到常量池当中的对象,String对象等 复制代码 代码如下: public class SyncTest{    private String name = "name";public void method(String flag)    {        synchronized (name)        {            System.out.println(flag + ", invoke metho

详解Java传统线程同步通信技术

编写代码实现以下功能 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次. 分析 1)子线程循环10次与主线程循环100次必须是互斥的执行,不能出现交叉,下面代码中通过synchronized关键字实现此要求: 2)子线程与主线程必须交替出现,可以通过线程同步通信技术实现,下面代码中通过bShouldSub变量实现此要求: 其他需要注意的地方 1)其中business变量必须声明为final类型,因为在匿名内部类和局部内部类中调用

java 实现线程同步的方式有哪些_java

什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题. 实现同步机制有两个方法: 1.同步代码块: synchronized(同一个数据){} 同一个数据:就是N条线程同时访问一个数据. 2. 同步方法: public synchronized 数据返回类型 方法名(){} 就是使用 synchronized 来修饰某个方法,则该方法称为同步方法.对于同步方法而言,无需显示指定同步监视器,同步

线程同步锁的选择

在需要线程同步的时候如何选择合适的线程锁? 例:选择可以存入到常量池当中的对象,String对象等 public class SyncTest { private String name = "name"; public void method(String flag) { synchronized (name) { System.out.println(flag + ", invoke method ...."); try { Thread.sleep(1000)

深入解析Java的线程同步以及线程间通信_java

Java线程同步 当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用.达到此目的的过程叫做同步(synchronization).像你所看到的,Java为此提供了独特的,语言水平上的支持. 同步的关键是管程(也叫信号量semaphore)的概念.管程是一个互斥独占锁定的对象,或称互斥体(mutex).在给定的时间,仅有一个线程可以获得管程.当一个线程需要锁定,它必须进入管程.所有其他的试图进入已经锁定的管程的线程必须挂起直到第一个线程退出管程.这些其他的线程被

java非常规线程同步问题一个!

问题描述 我现在有一个这样的资源类,可能的方法如下所示class A {List test:set(); // 初始化test,并赋值reset(); // 请空test,并对test重新赋值get(int index); // 取test中的某个值}一般情况下test初始化后有多个线程会调用get()方法取值,为了保证效率也不需要同步get()方法,但一定概率下会有其他线程对test调用reset()方法,我的需求是:当有线程调用reset()方法时(同一时刻只有一个线程调用reset()),

java web-多线程同步银行多账户取钱

问题描述 多线程同步银行多账户取钱 最近一直在想一个多线程的问题,举个例子 比如javaweb银行项目,同时两个人在异地个存取200元如何保证不出差错. 两个人在异地同时登陆的话其实在系统中是属于两个数据相同的对象(spring+hibernate)如果使用对象的排它锁也不会起作用.这种需求应该怎样实现那? 解决方案 跪求大神答疑解惑~~~~(>_<)~~~~