HashMap线程安全问题

chw_csdn_chw 2007-11-08 11:13:44
HashMap肯定不是线程安全的,这一点勿庸置疑。因为HashMap的get,set等方法都没有synchronized.
但是今天突然想到一个问题:
没有对HashMap写入的线程,仅有多个线程同时去读HashMap时也会线程不安全吗?

我看了下jdk1.5 hashmap get函数 的源码
public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}

觉得多线程并发读HashMap 应该没有问题吧?请高手们指正!
...全文
1691 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bloodstars 2008-07-28
  • 打赏
  • 举报
回复
读读没问题 读写问题和写写问题能一样不
Tony2251 2007-11-09
  • 打赏
  • 举报
回复
修改时才会出现问题~~~~~~
seaforce 2007-11-09
  • 打赏
  • 举报
回复
学习...
lmx8757921 2007-11-09
  • 打赏
  • 举报
回复
只有改的时候才有问题.
piaopiao11 2007-11-09
  • 打赏
  • 举报
回复
只是去读没有问题的,像ArrayList hashmap都是这样,如果同时要去修改就要考虑同步问题了
陈宝峰 2007-11-09
  • 打赏
  • 举报
回复
是的,多条线程去读取数据,不对hashmap中的数据做修改时不会有问题的。所谓的多线程安全主要是说并发修改的问题。
sharpyuce 2007-11-09
  • 打赏
  • 举报
回复
读没有问题。
LinkedHashMap在读时好象才有问题
schumiXsuse 2007-11-09
  • 打赏
  • 举报
回复
读不会有问题

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧