【发布时间】:2010-05-15 07:16:05
【问题描述】:
java.util.Collections 目前提供以下实用方法来为各种集合接口创建synchronized 包装器:
synchronizedCollection(Collection<T> c)synchronizedList(List<T> list)synchronizedMap(Map<K,V> m)synchronizedSet(Set<T> s)synchronizedSortedMap(SortedMap<K,V> m)synchronizedSortedSet(SortedSet<T> s)
类似地,它也有 6 个unmodifiedXXX 重载。
这里明显的遗漏是NavigableMap<K,V> 的实用方法。 extends SortedMap 确实如此,但 SortedSet extends Set 和 Set extends Collection 和 Collections 也有专用于 SortedSet 和 Set 的实用程序方法。大概NavigableMap 是一个有用的抽象,否则它一开始就不存在,但是没有实用方法。
所以问题是:
-
Collections没有为NavigableMap提供实用方法是否有特定原因? - 您将如何为
NavigableMap编写自己的synchronized包装器?- 看一眼source code for OpenJDK version of
Collections.java似乎暗示这只是一个“机械”过程- 是不是一般情况下可以像这样添加
synchronized线程安全特性? - 如果是这样一个机械过程,能不能自动化? (Eclipse 插件等)
- 这种代码重复是必要的,还是可以通过不同的 OOP 设计模式避免?
- 是不是一般情况下可以像这样添加
- 看一眼source code for OpenJDK version of
【问题讨论】:
标签: java design-patterns collections synchronization wrapper