New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JDK1.8中的ConcurrentHashMap #59

Closed
BossChow opened this Issue Jul 9, 2018 · 4 comments

Comments

Projects
None yet
3 participants
@BossChow

BossChow commented Jul 9, 2018

以上内容 base JDK1.7,1.8 的实现更加复杂但是原理类似,建议在 1.7 的基础上查看源码。

1.8中的ConcurrentHashMap主要是基于CAS+Synchronized实现?

@crossoverJie

This comment has been minimized.

Show comment
Hide comment
@crossoverJie

crossoverJie Jul 9, 2018

Owner

@BossChow 简单说是这样的,空了也补充下 1.8 的情况。

Owner

crossoverJie commented Jul 9, 2018

@BossChow 简单说是这样的,空了也补充下 1.8 的情况。

@crossoverJie

This comment has been minimized.

Show comment
Hide comment
@crossoverJie

crossoverJie Jul 21, 2018

Owner

@BossChow

#70

已经更新

Owner

crossoverJie commented Jul 21, 2018

@BossChow

#70

已经更新

@JuneYuan

This comment has been minimized.

Show comment
Hide comment
@JuneYuan

JuneYuan Sep 2, 2018

感谢作者分享,反馈几个小问题——

  1. 1.7 的 HashMap get 方法

  • 判断该位置是否为链表。
  • 不是链表就根据 key、key 的 hashcode 是否相等来返回值。
  • 为链表则需要遍历直到 key 及 hashcode 相等时候就返回值。”

感觉这里的表述有点 confusing, 因为从代码看,就是一个遍历链表的过程,长度为 0 就直接 return null, 否则就遍历直至找到对应的 entry, 并没有出现判断是否为链表的逻辑~

  1. HashMap 并发场景出现死循环的部分,图不太好看明白,而且为啥一个图重复了两次呀

  2. ConcurrentHashMap 的 put 流程

“不为空则需要新建一个 HashEntry 并加入到 Segment 中,同时会先判断是否需要扩容。”

笔误?应该是说“为空”的情况?

JuneYuan commented Sep 2, 2018

感谢作者分享,反馈几个小问题——

  1. 1.7 的 HashMap get 方法

  • 判断该位置是否为链表。
  • 不是链表就根据 key、key 的 hashcode 是否相等来返回值。
  • 为链表则需要遍历直到 key 及 hashcode 相等时候就返回值。”

感觉这里的表述有点 confusing, 因为从代码看,就是一个遍历链表的过程,长度为 0 就直接 return null, 否则就遍历直至找到对应的 entry, 并没有出现判断是否为链表的逻辑~

  1. HashMap 并发场景出现死循环的部分,图不太好看明白,而且为啥一个图重复了两次呀

  2. ConcurrentHashMap 的 put 流程

“不为空则需要新建一个 HashEntry 并加入到 Segment 中,同时会先判断是否需要扩容。”

笔误?应该是说“为空”的情况?

@crossoverJie

This comment has been minimized.

Show comment
Hide comment
@crossoverJie

crossoverJie Sep 4, 2018

Owner

@JuneYuan

建议新建一个 issue ,已经 close 的问题可能会忘记。

Owner

crossoverJie commented Sep 4, 2018

@JuneYuan

建议新建一个 issue ,已经 close 的问题可能会忘记。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment