問題タブ [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.

0 投票する
0 に答える
102 参照

lambda - Hazelcast IAtomicReference.alter ラムダ

既存のキャッシュに基づいて別のアトミック参照を設定しようとしています。コードを簡素化するためにラムダを使用したいのですが (必要なボイラー コードが少なくて済みます)、機能していないようです。

これは機能します:

以下のラムダ構文に切り替えると、シリアル化エラーが発生します。

エラー
com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'com.portal.objects.ObjectGraphEntryListener$$Lambda$61/1840645556'

ラムダで動作するようになった人はいますか?

ObjectGraphEntryListener

hazelcast.xml

0 投票する
1 に答える
34 参照

java - AtomicReference.compareAndSet(old,new) は old.field が変更されなかったことを保証しますか?

保証しAtomicReference.compareAndSet(old,new)ます

  1. old.field変わらなかった?
  2. それともold、新しいオブジェクトに再割り当てされなかったことを保証するだけですか?

2 が true の場合、AtomicReferenceのような不変オブジェクトでのみ役立つということStringですか? (変更の可変性の場合old正常old.fieldに失われるため) compareAndSet

0 投票する
1 に答える
56 参照

java - 新しい文字を StringBuilder オブジェクトにアトミックに連結する

私の問題は次のとおりです。

授業がある:

新しい文字を StringBuilder に同時にアトミックに追加する必要があります。しかし、問題は、最後の 128 文字だけがこのオブジェクトに含まれている必要があることです。操作はノンブロッキングでなければならないため、StringBufferを使用できません。

したがって、次の 2 つの操作があります。

最初: StringBuilder に既に 128 文字があるかどうかを確認します。

2番目:そうでない場合->新しい文字を追加し、ある場合->最初の文字を削除して新しい文字を追加します。

この 2 つまたは 3 つの操作をアトミックにする方法はありますか?

このメソッドを作成しましたが、機能しません:

テストのために、このメソッドを作成しました:

これは実際の問題ではありません。AtomicReference を変更して、動作する他のものに変更できます。タスクは、ロックフリーで競合状態のない操作を作成することです