【发布时间】:2020-06-20 17:02:36
【问题描述】:
我需要缓存并发系统的最近的结果(比如 10,000),并随机访问它们。 由于大多数并发缓存都是基于链表的,所以我想知道java中是否存在线程安全的随机访问循环数组?
【问题讨论】:
-
您能否详细说明您需要如何使用它?例如,Guava 的内存缓存是否适合您?
-
假设“随机访问”是指按索引访问?如果是这样,是按LRU顺序吗?如果是这样,你为什么需要它?你到底想达到什么目的?
-
@Daniele 用于故障转移的本地缓存,写操作远多于读操作
-
@Bohemian 是的,按索引,但限制比 LRU 弱,因为它只用于故障转移
-
链表的锁定问题在设计良好的缓存中应该不是问题。如果您需要 LRU,那么 ConcurrentLinkedHashMap 或 Guava's Cache 就足够了。如果您可以利用更智能的驱逐策略,那么Caffeine 是首选。见benchmarks。
标签: java caching concurrency circular-buffer