请教一个基本线程问题,在实际中的解决方案
在最初学多线程的时候,肯定哪本书上都会举这个例子,张三有1000块钱,别人给他打100块,同时他自己又在给别人转100块,如果出现线程问题,可能再出现,打钱进程读到了10...
在最初学多线程的时候,肯定哪本书上都会举这个例子,张三有1000块钱,别人给他打100块,同时他自己又在给别人转100块,如果出现线程问题,可能再出现,打钱进程读到了1000,然后减去100,但还没来得急赋值回去,原本的1000就又被转账进程读走了并拿去执行1000-100;之后打钱进程赋值1100,最后转账进程赋值900;造成张三莫名其妙少了100
一般书上肯定就拿这个例子引出多线程,说在汇款转账方法上加上synchronized
但是我想问的是,实际应用中是怎么处理的?我觉得不可能是synchronized吧?毕竟访问量可能非常巨大,一旦加了synchronized,那后面的人岂不是要等死了,所以我想问问在实际环境中是怎么处理类似多线程问题的? 展开
一般书上肯定就拿这个例子引出多线程,说在汇款转账方法上加上synchronized
但是我想问的是,实际应用中是怎么处理的?我觉得不可能是synchronized吧?毕竟访问量可能非常巨大,一旦加了synchronized,那后面的人岂不是要等死了,所以我想问问在实际环境中是怎么处理类似多线程问题的? 展开
2014-08-04 · 知道合伙人数码行家
关注
展开全部
你好,提问者:
首先多线程是对的,多线程加synchronized也是没有问题的。
其次,当两个人同时操作一个用户金额时,才会产生多线程。
我们也知道,现在的取款机都是分布,而金额不是共享的。
首先多线程是对的,多线程加synchronized也是没有问题的。
其次,当两个人同时操作一个用户金额时,才会产生多线程。
我们也知道,现在的取款机都是分布,而金额不是共享的。
追问
【现在的取款机都是分布,而金额不是共享的】
这个意思是指的,每处提款机的金额是独立的么?可是即便是独立的那也是要汇总的吧,因为不会出现我在这个提款机上查我的余额是一个数,到了另外一个上面又成了另一个数
我觉得,归根结底也会有一个最核心的数据库,来保存金额吧,否则各处的数据同步要怎么做呢?
追答
嗯,你可以了解一下高并发。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询