java - 多线程环境下的 HashMap 和哈希表

标签 java multithreading thread-safety hashtable hashmap

我真的很困惑这两个集合在多线程环境中的表现。

哈希表是同步的,这意味着不会有 2 个线程同时更新它的值,对吧?

最佳答案

ConcurrentHashMap s 表示线程安全映射。

它们提供了 HashTable 的所有功能,并且性能非常接近 HashMap。

性能是通过使用 map 范围锁而不是使用 map wide lock 获得的,默认情况下该集合维护一个包含 16 个锁的列表,每个锁用于锁定 map 的一个 bucket。您甚至可以配置桶的数量 :) 根据您的数据调整此项可以帮助提高性能。

Brian Goetz 的《Java 并发实践》我怎么推荐都不为过 http://jcip.net/

每次阅读我仍然能学到新东西。

关于java - 多线程环境下的 HashMap 和哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361784/

相关文章:

java - 使用 PDFBox 添加页面不起作用

java - 可以通过 WebSocket 传递的最大数据量是多少?

java - 在锁定对象上同步与在处理的对象上同步

c - 为什么 Apache MPM prefork.c 使用互斥量来保护 accept()?

c - 从随机分布的粒子到规则网格的最佳并行通信

java - 围绕应用程序包装 Applet

java - 如何确定 Tic Tac Toe 计划的获胜者

multithreading - EnumWindows 和 EnumChildWindows 使我的 Treeview 保持更新

java - 如何在Java中暂停/重新启动SingleThreadExecutor(ExecutorService)?

java - 有效的不可变对象(immutable对象)有意义吗?