Thi*_*ilo 5 java multithreading hashmap concurrenthashmap java.util.concurrent
我需要一个可以从多个线程访问的HashMap.
有两个简单的选项,使用普通的HashMap并在其上进行同步或使用ConcurrentHashMap.
由于ConcurrentHashMap不会阻止读取操作,因此它似乎更适合我的需求(几乎完全是读取,几乎从不更新).另一方面,我希望无论如何都要求非常低的并发性,因此应该没有阻塞(只是管理锁的成本).
地图也将非常小(十个条目下),如果这有所不同.
与常规HashMap相比,读写操作的成本要高得多(我假设它们是多少)?或者,当可能存在中等级别的并发访问时,ConcurrentHashMap总是更好,无论读取/更新比率和大小如何?
另一方面,我希望无论如何都要求非常低的并发性,因此应该没有阻塞(只是管理锁的成本).
获取和释放非对称 Java互斥锁(原始锁定)的成本微乎其微.因此,如果您认为争用的可能性非常低,那么简单HashMap可能是您最好的选择.
但这都是猜想.除非并且直到您实际分析了您的应用程序,否则花在推测优化上的所有时间很可能(*)浪费时间.
*...除非你有一个非常好的直觉.