ConcurrentHashMap 用法中的段 class
Segment class in ConcurrentHashMap usage
查看 ConcurrentHashMap 的实现,我发现在尝试对其进行操作时 (put/remove),找到了值,然后将该值用作执行实际操作的同步代码的锁。这样只有那个桶被锁定在实际存在价值的地方。
我还看到一个 class 段声明,并且在许多在线资源中提到它用于实现并发。但是我找不到任何使用Segment进行同步实现的实现代码。
那么我到底想念什么?
我正在调查 java 11.
查看sources of OpenJDK 8,classSegment
评论:
/**
* 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 {
...
}
所以它的存在似乎只是为了向后兼容。
查看 ConcurrentHashMap 的实现,我发现在尝试对其进行操作时 (put/remove),找到了值,然后将该值用作执行实际操作的同步代码的锁。这样只有那个桶被锁定在实际存在价值的地方。
我还看到一个 class 段声明,并且在许多在线资源中提到它用于实现并发。但是我找不到任何使用Segment进行同步实现的实现代码。
那么我到底想念什么?
我正在调查 java 11.
查看sources of OpenJDK 8,classSegment
评论:
/** * 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 { ... }
所以它的存在似乎只是为了向后兼容。