ehcacheはデフォルトでマルチスレッドをサポートしていますか、それとも設定を変更する必要がありますか? Ehcacheで私のアプリケーションをマルチスレッドすると、DBのヒット数が実際に増えていることがわかります。つまり、キャッシュがすべてシングルトンであるにもかかわらず、すべてのスレッドで使用できるグローバルキャッシュがありません。助言がありますか?Ehcache&MultiThreading
14
A
答えて
11
これはthe FAQから、あなたの質問に答えることがあります。
は、それがキャッシュから取得後の要素の値を変更するスレッドセーフですか?
は、キャッシュ要素の値が複数のスレッドからグローバルにアクセス可能であることを覚えておいてください。 本質的に値を変更するのはスレッドセーフではありません。値を取得し、キャッシュ要素を削除してから値を再挿入する方が安全です。 official documentationから
(私が追加強調)
1
は、それがを具体的に構築され、あなたが複数のスレッドからElement
を変更しない限り、非常に同時アクセスの下でも実行するようにテストされて表示されます。
しかし、もちろん、これはEhcacheのを使用すると、コードのスレッドセーフの他の部分を作るという意味ではありません。同じキーを使用して複数のスレッドから同じ値をフェッチした場合、そのインスタンスは共有され、変更する前に何をしているのかを知る必要があります。ベストは文字列のような不変のオブジェクトをキャッシュされた値として使うようです。
関連する問題
- 1. multithreading scope
- 2. jython multithreading
- 3. Spring-AOP&MultiThreading
- 4. Delphi TList in multithreading
- 5. java network multithreading
- 6. ConcurrentQueue with multithreading
- 7. .net multithreading winforms
- 8. MultiThreading and Deadlock
- 9. python multithreading question
- 10. Java MultiThreading objects
- 11. Spring + Hibernate with multithreading environment
- 12. sqlite3 multithreading in objective c
- 13. Stanford Parser - MultiThreading issue - LexicalizedParser
- 14. python multithreading save dictionary result
- 15. Ehcache 3.2
- 16. Android API 7(2.1)、MapView、MultiThreading、ConcurrentModificationException
- 17. C++ multithreading:条件変数
- 18. C#WPF UI Freeze Issue MultiThreading
- 19. EHCache無効
- 20. Spring Ehcache refresh
別の方法として、ehcache明示的ロックAPI(http://ehcache.org/documentation/explicitlocking.html)を参照することができます.ehcacheとマルチスレッドに関する議論は、この側面も考慮しないと不完全である可能性があります。 –