【发布时间】:2022-01-01 20:07:39
【问题描述】:
查看 ConcurrentHashMap 的实现,我看到当尝试操作它(放置/删除)时,找到了值,然后将该值用作执行实际操作的同步代码的锁。这样,只有那个桶被锁定在价值实际存在的地方。
我还看到声明了一个类 Segment,并且在许多在线可用资源中提到它用于实现并发。但是我找不到任何使用 Segment 进行同步实现的代码。
那么我到底想念什么?
我正在研究 java 11。
【问题讨论】:
查看 ConcurrentHashMap 的实现,我看到当尝试操作它(放置/删除)时,找到了值,然后将该值用作执行实际操作的同步代码的锁。这样,只有那个桶被锁定在价值实际存在的地方。
我还看到声明了一个类 Segment,并且在许多在线可用资源中提到它用于实现并发。但是我找不到任何使用 Segment 进行同步实现的代码。
那么我到底想念什么?
我正在研究 java 11。
【问题讨论】:
看sources of OpenJDK 8,类Segment有评论:
/** * Stripped-down version of helper class used in previous version, * declared for the sake of serialization compatibility */ static class Segment<K,V> extends ReentrantLock implements Serializable { ... }
所以它似乎只是为了向后兼容而存在。
【讨论】: