use*_*888 3 java concurrency atomic
什么是原子动作以及为什么它们是必要的?另外,如何在Java中实现原子操作?
我的理解是,在编程中,原子动作是一种有效地发生在一起的动作.原子动作不能在中间停止,它要么完全发生,要么根本不发生.
例如,在线订购需要两个操作的机票:付款和座位预订.潜在的乘客必须.
JB *_*zet 13
你的解释,恕我直言,而不是解释数据库事务的原子性意味着什么:ACID中的A.
关于并发性,原子性相当意味着当线程修改某个对象(或一组对象)的状态时,另一个线程无法看到任何中间状态.它可以看到操作前的状态,也可以看到操作后的状态.
例如,更改long变量的值不是原子操作.它涉及设置32个第一位的值,然后设置32个最后位的状态.如果未正确同步对long变量的访问,则线程可能会看到中间状态:32个第一位已更改,但32个最后位尚未更改.
实现原子操作的方法是使用同步.同步涉及使用
也许你应该考虑一下交易。进行一些处理,但在一切就绪之前不要保存更改。就像当您从机器上取款时一样,您需要遵循一系列步骤,然后才能看到帐户上的变化,即输入您的卡、您的密码、说出您想要多少钱,然后收到钱。如果其中一个步骤失败,您不会看到您的储蓄帐户发生变化,例如您的密码不正确,或者您试图提取的钱多于您拥有的金额...
你可以阅读java教程。 http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html