并发编程实战第4章答疑

阅读并发编程实战这本书,第4章,实在是不明白这句话描述的是啥?
状态是无效的,就要进行封装,否则外部代码就会使对象无效?
无效的状态转移,原子操作?
我的知识还不够连接起来。

img

很容易理解哈,就比如一些都喜欢举得例子,银行转账。 转账从业务状态,实际上就是转账前--转账后剩余两种状态。但是程序状态,可能就分 A转账前,A扣去款,B加上款,转账结束。其中如果没有进行原子操作,那么中间的状态 就属于无效状态。你转钱,不能自己的钱扣了,对方账户还没有收到钱。或者你钱没扣,对方无缘无故多了一笔转账也是不合适的。所以解决这样的,就必须A扣款 更 B进款 要不都执行成功,要不都不执行。这就是原子操作。对于数据库的操作,要通过事务来控制。所以事务也有个特性就是原子性。不知这么说明白否?