問題タブ [atomicreference]
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.
lambda - Hazelcast IAtomicReference.alter ラムダ
既存のキャッシュに基づいて別のアトミック参照を設定しようとしています。コードを簡素化するためにラムダを使用したいのですが (必要なボイラー コードが少なくて済みます)、機能していないようです。
これは機能します:
以下のラムダ構文に切り替えると、シリアル化エラーが発生します。
エラー
com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'com.portal.objects.ObjectGraphEntryListener$$Lambda$61/1840645556'
ラムダで動作するようになった人はいますか?
java - AtomicReference.compareAndSet(old,new) は old.field が変更されなかったことを保証しますか?
保証しAtomicReference.compareAndSet(old,new)
ます
old.field
変わらなかった?- それとも
old
、新しいオブジェクトに再割り当てされなかったことを保証するだけですか?
2 が true の場合、AtomicReference
のような不変オブジェクトでのみ役立つということString
ですか? (変更の可変性の場合old
、正常old.field
に失われるため) compareAndSet
java - 新しい文字を StringBuilder オブジェクトにアトミックに連結する
私の問題は次のとおりです。
授業がある:
新しい文字を StringBuilder に同時にアトミックに追加する必要があります。しかし、問題は、最後の 128 文字だけがこのオブジェクトに含まれている必要があることです。操作はノンブロッキングでなければならないため、StringBufferを使用できません。
したがって、次の 2 つの操作があります。
最初: StringBuilder に既に 128 文字があるかどうかを確認します。
2番目:そうでない場合->新しい文字を追加し、ある場合->最初の文字を削除して新しい文字を追加します。
この 2 つまたは 3 つの操作をアトミックにする方法はありますか?
このメソッドを作成しましたが、機能しません:
テストのために、このメソッドを作成しました:
これは実際の問題ではありません。AtomicReference を変更して、動作する他のものに変更できます。タスクは、ロックフリーで競合状態のない操作を作成することです