18

次の質問にどう答えますか?

Java クラスのメソッドには、アトミックに実行する必要があるコードのブロックが含まれています。適切な疑似コードを使用して、このコード ブロックがアトミックに実行されるようにする方法を説明してください

メソッドを作成することでこれを達成できますか..

public final AtomicInteger x = new AtomicInteger(0);

次に、get ステートメントが返されたことを確認します。

x.get()

x の値をインクリメントしたい場合は、これを行いますか?

x.getAndIncrement();
4

2 に答える 2

2

予想される答えは次のようなものだったと思います。

public class A {
    public void foo() {
        // .. some code
        doSomething(); // the critical part
        // .. come code
    }

    public synchronized void doSomething() { // this is a synchronized method
        // the critical code
    }
}

の実行は実際にはアトミックでdoSomething()はありません (免責事項:アトミック性とは大きく異なります) が、synchronizedキーワードにより、( の 1 つのインスタンスで) 1 つのスレッドのみがこのメソッドの実行に入ることができますA。それが原子性の代わりに彼らが意味したことだと思います。

Javaの原子性に関する別の質問がありますその中に役立つものが見つかるかもしれません。

于 2013-06-03T17:37:10.993 に答える