私は2つのクラスとguavaキャッシュオブジェクトを含む3つ目のシングルトンクラスを持っています。クラスAでこのキャッシュを使用してget(key)とインクリメントを実行し、呼び出されたときにインクリメントし、3000 /分の速度で呼び出します。 get(key)を使用してこの値をdbに追加し、キーに対して0を入れるクラスBがあります。 AとBの両方が同じ値を一度に読み取ると、問題につながる可能性があります。 たとえば、keyの値が12で、両方の読みが12、Bが0に設定されている場合、Aは再び13に設定します。 何をすべきかをお勧めします。 B.マップビューのA用guavaキャッシュのような更新機能の選択が必要
0
A
答えて
1
使用
cache.asMap().compute(key, (k, v) -> v==null ? 1 : v+1)
と
int[] result = {0};
cache.asMap().computeIfPresent(key, (k, v) -> {
result[0] = v;
return 0; // or null if you want to remove the entry
});
キー上のコンピューティングをロックConcurrentMap
、です。
おそらくキャッシュは一切必要ありません。 ConcurrentHashMap
、AtomicLongMap
、または(Xaerxessと記されている)ConcurrentHashMultisetを使用することを検討してください(おそらくマルチセットは数えられるので、最後の選択肢はおそらく最高です)。
+1
OPにキャッシュが必要ないと私は同意します。['ConcurrentHashMultiset'](https://google.github.io/guava/releases/23.0/api/docs/com/google/common/collect/)もお勧めします。これはクラスBが行う場合(すなわち、それを "キャッシュ"から取り除く)であれば、箱から取り出してゼロの値を扱うからです。 – Xaerxess
関連する問題
- 1. タグ選択で必要な属性が機能しません
- 2. 選択チェックのためのJavascript機能が必要
- 3. 更新要素、選択肢の選択
- 4. ドロップダウンリスト選択したインデックスが更新パネルで機能しない
- 5. kNNの機能の選択と重要な機能
- 6. ロード機能を持たないguavaキャッシュを使用する
- 7. ドロップダウンリストを選択した後、php - ajaxの更新テキストフィールドが機能しない(yii)
- 8. linqの新機能を選択C#
- 9. ASP.Netキャッシュ破損アプローチが機能しない(更新済み)
- 10. guavaのキャッシュがいっぱいで、消去可能な要素がないとどうなりますか?
- 11. CollectionViewの選択が機能しない
- 12. Jquery変更の選択値が機能しない
- 13. Railsの更新フォームでは、どのように選択ドロップダウンが機能するのですか?
- 14. QRubberBandのような機能 - 静的選択エリア
- 15. 必要に応じてJqueryの更新機能
- 16. ショーの機能名機能の選択
- 17. 選択機能
- 18. asp.netやstackoverflowのようなタグの選択が必要でしたか?
- 19. Google Maps APIの更新が正しく機能するようにする必要があります
- 20. 選択要素がui.bootsrap.tabsで機能しない
- 21. カピバラ選択オプションが機能しない
- 22. AutoHotKey選択ポップアップウィンドウが機能しない
- 23. ワードプレス選択クエリが機能しない
- 24. オンザフライでGuavaキャッシュプロパティの更新
- 25. AngularJSウォッチがドロップダウン(選択)変更で機能しない
- 26. 必要な機能の間にスコープが必要
- 27. Jenkinsアクティブな選択肢3つのパラメータのカスケード選択が機能しない
- 28. 更新プロパティが機能していないようです
- 29. SQLクエリの選択のヘルプが必要
- 30. guavaのキャッシュとehcacheのベンチマーク
クラスBは、15分間隔で呼び出され、追加されます。 –