读码农翻身之Actor

1、如何解决需要加锁的问题?
既然线程是操作系统层面的概念,能不能把线程的概念隐藏起来,然后所有的操作都不用加锁呢?

2、为什么需要加锁?
需要加锁的本质是什么?首先是共享的状态,例如Account中的balance,多个线程都要读写,其次就是多个线程乱序,并发执行。

能不能换个思路,把这个Account对象看成一个黑盒子,想存款,就发一个存款的消息过来,想取款就发一个取款的消息过来。不管是有一个消息,还是有100个消息,统统放到黑盒子的一个队列中,然后让Account对象一个个顺序处理。相当于将并发的操作变成了串行的操作。
在这里插入图片描述
其实这种操作就相当于是异步操作了。保持最终一致性?但是如果是取款的时候余额不足呢?又要如何通知调用方?也使用异步通知的方式?

在这里插入图片描述
虽然理论上可行,但是有个问题,这种转账操作,很有可能只是http接口而已,http接口请求发送到后端后,确实可以异步去进行取款和存款操作,但是取款失败后,难道需要服务端去调用客户端?这个显然不可理。还是说通过消息推送的方式?消息推送确实可以考虑。

3、Actor模型
在这里插入图片描述

4、如何使用Actor模型来实现转账操作?(其实Actor就相当于一个黑盒子)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值