什么是原子动作以及为什么需要它们?另外,如何在Java中实现原子操作?
我的理解是,在编程中,原子动作是一个有效发生的动作。原子动作不能在中间停止,要么完全发生,要么根本不发生。
例如,在线订购需要两个操作的机票:付款和座位预订。潜在的乘客必须要么。
答案 0 :(得分:13)
你的解释,恕我直言,而不是解释数据库交易的原子性意味着什么:ACID中的A。
关于并发性,原子性相当意味着当线程修改某个对象(或对象集)的状态时,另一个线程无法看到任何中间状态。它可以看到操作前的状态,也可以看到操作后的状态。
例如,更改long变量的值不是原子操作。它涉及设置32个第一位的值,然后设置32个最后位的状态。如果未正确同步对long变量的访问,则线程可能会看到中间状态:32个第一位已更改,但32个最后位尚未更改。
实现原子操作的方法是使用同步。同步涉及使用
答案 1 :(得分:2)
也许你应该考虑交易。制作一些流程但不保存更改,直到所有内容都有序。就像你从一台机器上取款一样,你需要遵循一系列步骤,然后才能看到你帐户的变化,即把你的卡,密码,说出你想要多少钱,然后收到钱。如果其中一个步骤出现问题,您就不会看到储蓄帐户中的更改,例如你的密码不正确,或者你试图提取的钱多于你拥有的......
您可以阅读java教程。 http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html
答案 2 :(得分:1)
答案 3 :(得分:1)
答案 4 :(得分:-1)
Atomicity - 表示在事务中执行所有语句或不执行任何语句。
如果交易有5个陈述。如果在运行所有语句之前发生故障,则原子性意味着执行5个语句或者不执行任何语句。