我有一个产生多达10,000个线程的应用程序。每个线程都将更新一个Hashmap。我知道Hashmaps不是线程安全的,并且听到并发的hashmaps是线程安全的。那么cuncurrent hashmap可以处理这个场景,最多10,000个线程更新它而不会出现死锁吗?
答案 0 :(得分:3)
并发hashmap可以处理无限数量的线程而不会发生死锁。
但是,为什么要在10,000个线程上共享地图呢?必须有更好的方法来做你想做的事。
答案 1 :(得分:0)
您的工作负载是读还是重?在第一种情况下,ConcurrentHashMap
可能会很好地处理负载,实际上大部分时间它都可以在不使用任何锁定的情况下获取密钥。
另一方面,如果你的工作量很大,你很可能因为锁定而导致性能下降,你应该开始研究其他实现,例如Cliff Click's lock-free hashmap(有{ {3}}在github上,包括与maven的集成),这可能更适合这种工作负载。