我需要一张满足以下要求的地图:
应该是高并发的。这put()
, get()
and remove()
方法可以由多个线程同时调用。
它应该是固定大小的。如果尺寸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(使用前将#替换为@)