問題タブ [atomicinteger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AtomicInteger の使用方法
たとえば、次のようなクラスがあります。
質問は、私は時々更新したいのですが、number
オブジェクトをステートレスにする必要があります。つまり、nubmer
最終的でなければなりません。私の友人は、AtomicInteger
クラスを使用することを提案しましたが、それを機能させる方法がわかりません。
java - AtomicInteger.updateAndGet() と AtomicInteger.accumulateAndGet() の間に機能上の違いはありますか?
AtomicInteger.accumulateAndGet()
に置き換えることができないシナリオはありますかAtomicInteger.updateAndGet()
、それともメソッド参照の便宜上のものですか?
機能的な違いが見られない簡単な例を次に示します。
明らかに、同じことが と にも当てはまりgetAndUpdate()
ますgetAndAccumulate()
。
java - 可視性を持つ int カウンターのインクリメント
あるスレッドが int を更新し、ある時点で別のスレッドがそれを読み取る状況があります。だからシングルリーダーシングルライター。これまではvolatile
その目的で int を使用していましたが、これによりメモリ バリアで完全同期が強制されるため、別のことを考えていました。
1つのアプローチは次のようになりますAtomicInteger.incrementAndGet()
が、これはまったく同じ効果があり、実際には遅くなると思います
別のアプローチはAtomicInteger.lazySet
、ライター用の追加の不揮発性カウンターを使用することです。したがって、基本的には
素朴な「lazyIncrement
」として。
volatile
実際には、ライターによる intの単純なインクリメントよりもパフォーマンスが高いでしょうか?
ありがとう
java - 3 つのスレッドを使用して数字を順番に出力する
3 つのスレッドが 1 から 10 までの数字を順番に出力しようとするプログラムがありCountDownLatch
ます。カウントを維持するために a を使用しています。
しかし、プログラムは 1 を印刷した直後に停止します。
注:AtomicInteger
の代わりに使用できることを認識していInteger
ます。しかし、現在のコードの問題を見つけようとしています。
メインプログラム:
で編集されたプログラムAtomicInteger
:
java - AtomicIntegerを使用してメソッドを介してintを変更することは可能ですか?
私は方法を持っています:
次に、メインで呼び出します。
結果はまだ 3 です。この方法で int を変更することは可能ですか?