Java 如何解释原子行为?

Java 如何解释原子行为?,java,concurrency,atomic,Java,Concurrency,Atomic,什么是原子行为,为什么它们是必需的?另外,原子操作是如何在Java中实现的? 我的理解是,在编程过程中,原子行为是一种有效地同时发生的行为。原子作用不能在中间停止,它要么完全发生,要么完全不发生。< /P> 例如,在线订购机票需要两个操作:付款和座位预订。潜在乘客必须选择其中之一 支付并预订座位,或 既不付钱也不预定座位 嗯,不是原子作用不能在中间停止。更多:所有他的效果在操作完成(提交)时可见,或者根本不可见(中止/回滚);因此,它可以被停止,但系统的状态不会被更新。通过阅读您的解释,IMHO

什么是原子行为,为什么它们是必需的?另外,原子操作是如何在Java中实现的?

我的理解是,在编程过程中,原子行为是一种有效地同时发生的行为。原子作用不能在中间停止,它要么完全发生,要么完全不发生。< /P> 例如,在线订购机票需要两个操作:付款和座位预订。潜在乘客必须选择其中之一

  • 支付并预订座位,或
  • 既不付钱也不预定座位

  • 嗯,不是原子作用不能在中间停止。更多:所有他的效果在操作完成(提交)时可见,或者根本不可见(中止/回滚);因此,它可以被停止,但系统的状态不会被更新。

    通过阅读您的解释,IMHO,而是解释了原子性对于数据库事务的含义:ACID中的A

    关于并发性,原子性意味着当一个线程修改某个对象(或一组对象)的状态时,另一个线程看不到任何中间状态。它可以看到操作前的状态,也可以看到操作后的状态

    例如,更改长变量的值不是原子操作。它包括设置前32位的值,然后设置最后32位的状态。如果对长变量的访问没有正确同步,线程可能会看到中间状态:前32位已经更改,但最后32位还没有更改

    实现原子操作的方法是使用同步。同步涉及使用

    • synchronized关键字
    • volatile关键字
    • 原子变量(原子整数等)

      • 也许你应该考虑交易。进行一些处理,但在一切正常之前不要保存更改。就像当你从机器上取款一样,在看到你的账户发生变化之前,你需要遵循一系列步骤,例如,输入你的卡,密码,说出你想要多少钱,收到钱。如果某个步骤失败,则您的储蓄账户不会发生变化,例如,您的密码不正确,或者您试图提取的钱比您现有的多

        您可以阅读java教程。

        原子性-表示事务中要么执行所有语句,要么不执行任何语句


        如果一个事务有5条语句。如果在运行所有语句之前发生故障,那么原子性意味着要么执行5条语句,要么不执行任何语句。

        听起来像。。。家庭作业。非常感谢,这完美地回答了我的问题,你的例子很容易理解。请注意你的拼写。你的答案很难理解。很抱歉,我在这里使用快捷方式……transctn for transaction..extcd for executed