【问题标题】:changing two values at a time in java在java中一次更改两个值
【发布时间】:2012-02-11 07:25:05
【问题描述】:

如何同时更改两个值。我正在用java编写b-tree的代码。但我无法一次修改两个变量。就像在 C 中一样,我们通过使用指针来做到这一点。但是如何在java中做到这一点?我希望我的问题可以理解。

【问题讨论】:

  • Like in C , we do so by using pointers: 怎么样?你的意思是如果你更新一个指针值,所有其他指向相同地址的指针也会更新?
  • JVM 一次只会处理一条指令。您不能同时修改两个变量。除非你说的是使用线程?
  • 一些示例(伪)代码和/或更具体的示例会很有用。
  • 是的,我们可以使用指针修改两个或多个变量。在 b-tree 中,一个节点分解为两个节点。在 c 中实现这个函数很容易,但是在 java 中,缺少指针使它成为一个棘手的问题。希望熟悉b-tree的人能理解我的问题
  • Java 中的所有非原始变量都是对对象的引用(指针的另一个名称)。它的工作方式应该与 C 中的指针相同。没有看到任何代码,很难猜出你的意思。

标签: java b-tree


【解决方案1】:

如果其中一个是整数,您可以使用AtomicStampedReference。有关定义,请参见 here

【讨论】:

    【解决方案2】:

    我不确定我是否完全理解您的问题,但在 Java 中设置对象引用是原子性的。您可以使用它一次更改一组多个值,例如:

    class BTreeState {
        int foo;
        long bar;
        String whatever;
    }
    
    //here you change foo, bar, whatever all at once
    state = new State(1, 2L, "something");
    

    【讨论】:

      【解决方案3】:

      This 将帮助您编写 b-tree 代码。

      nearest substitute for a function pointer in Java

      您也可以使用克隆。

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 2018-02-09
        • 1970-01-01
        • 2011-04-24
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多