固定大小的并发Map

2023-12-23

我需要一张满足以下要求的地图:

  1. 应该是高并发的。这put(), get() and remove()方法可以由多个线程同时调用。

  2. 它应该是固定大小的。如果尺寸HashMap达到最大值(例如 10000),则不允许向映射添加新条目。它不能是 LRU 缓存,其中最旧的条目在达到最大大小时被删除。

ConcurrentHashMap可以满足#1。但是,不确定如何在上面实现#2ConcurrentHashMap不影响并发性(添加自定义put()仅当大小小于最大大小时才会添加到地图的方法需要“同步”。这将违背使用并发的目的HashMap).

请让我知道你的想法。


您可以实现一个委托给 ConcurrentHashMap 的映射,使用计数信号量来限制映射中的项目数量。这信号 http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Semaphore.html类使用原子更新的 int 来跟踪许可,因此不会产生太多额外的开销。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

固定大小的并发Map 的相关文章

随机推荐