Java线程的迷惑

最近在了解Java的多线程,但是不知道具体的应用:在什么情况下会使用多线程。对于银行的存款取款,我也是不理解,在实际应用中,存款的取款是两个对象在操作,不会像例子所得在一个对象中出现。是不是我理解的有问题呢?
问题补充

sy197661944 写道
对于存款取款.是两个操作(线程)对一个对象(一个账户).

线程,简单的理解为一个动作吧....
可以简单的理解为一个等待执行方法(较真的话,此说法是错误的,只帮助理解),start了.就等待执行了.其他就交给cpu了.

我的迷惑就是:这两个操作是两个不同的进程,怎么达到安全性控制。还有就是多线程在什么情况下用到呢。

4个回答

[quote]我的迷惑就是:这两个操作是两个不同的进程,怎么达到安全性控制。还有就是多线程在什么情况下用到呢。 [/quote]

一个迷惑没看懂

用处我来举个例子

比如有个播放器,你用他来播放3D版JPM
此时播放器的工作就是播放

如果这个播放器是单线程的,则他会一直播放,直到该任务结束

如果播放途中有人来查房,你想关闭这个播放器,它是不会立即响应你的操作的

至于你说的银行存款的例子应该是涉及到线程安全、同步等方面的问题。
比如你有某个银行的一个账户,里面有1k

同时有两个人在不同的储蓄所向其中存款100,对于这个账户最终有多少钱当然需要严格的控制

对于存款取款.是两个操作(线程)对一个对象(一个账户).

线程,简单的理解为一个动作吧....
可以简单的理解为一个等待执行方法(较真的话,此说法是错误的,只帮助理解),start了.就等待执行了.其他就交给cpu了.

多线程把握一个原则:
读时不能写
写时不能读
可以并发读
不能并发写
读写比例高
至于应用场景也好理解,比如领导安排你一个人去搬一堆砖头,这是单线程;后来你叫了多个朋友来帮忙一起搬,这就是多线程。程序和生活一样,多思考理解,自然就明白了......

存款取款当然是针对同一个对象操作了 --- 同一个账户
因为账户是个可变类,(钱数会变化)

那么如果同时有多个动作对一个账户操作,那么这个多线程就需要同步
比如账户有1000块,2个人[color=red]同时[/color]取800, 那么判断余额不足就会出问题
存款和取款同时操作也一样, 账户没钱,一个存1000,另一个取800
那么请问可以取么??
所以,要么synchro同步,要么lock来保证安全

虽然在现实生活中对使用者没有太多意义,在同一分同一秒操作账户的可能性很小

但从编程角度security是大前提,我正好是在银行做back office
一切一切都要保证安全,否则银行怎么会每年砸那么多钱也不敢换掉AS400

但是其实银行里都是有一个batch的,不会你立刻存钱就修改数据库里的信息
而数据库也是有一个最终表,还有update表
即使你刷了卡,在ATM上取了钱,即使你在柜台取现金也一样,处理过程是一级一级的
需要很久 (好像跑题了 哈哈)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问