Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14490773
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:37:20

下载本文示例代码
 ?b>包装器实现   包装器实现是一种将它们的实际工作委托给一个特定 对象集 的实现,它在该 对象集 所提供的功能之上又增加了额外的功能。 对design patterns(设计样式) 爱好者来说,这是一个 decorator(油漆工) 样式。虽然有点异国情调,但确实简单明了。   这些实现是匿名的:不是提供一个公共类,JDK 提供一个 static factory method(静态方法)。 所有这些都可以在仅包含静态方法的Collections API 中找到。   同步包装器(Synchronization Wrappers)   同步包装器将自动同步(线程安全的)添加到一个任意的 对象集。6个 核心 对象集 接口中的每一个都对应一个静态方法: public static Collection synchronizedCollection(Collection c); public static Set synchronizedSet(Set s); public static List synchronizedList(List list); public static Map synchronizedMap(Map m); public static SortedSet synchronizedSortedSet(SortedSet s); public static SortedMap synchronizedSortedMap(SortedMap m);   每一个这样的方法都返回一个由特定 对象集 作为后备的同步(线程安全的)Collection。 为保证串行存取,所有对后备 对象集 的存取都必须通过返回的 对象集 来完成,这一点是至关重要的。 保证这一点的一个简便办法是不要保持对后备 对象集 的引用, 创建这样的同步 对象集 是一个小技巧: List list = Collections.synchronizedList(new ArrayList());   一个用这种方式创建的对象集,每一比特都是线程安全的,就象VectorM那样的"正常"同步 对象集 一样。 在需要并发存取情况下,在返回的 对象集 上迭代时,用户对返回的 对象集 做手工同步是十分必要的。 这是因为迭代是通过对对象集 的多重调用完成的,它必须被编写为一个单独的最小单元操作(atomic operation)。在一个包装器同步的 对象集 上的迭代惯用程序如下所示: Collection c = Collections.synchronizedCollection(myCollection); synchronized(c) { Iterator i = c.iterator(); // Must be in the synchronized block! while (i.hasNext()) foo(i.next()); } 共3页。 1 2 3 8 :  ?b>包装器实现   包装器实现是一种将它们的实际工作委托给一个特定 对象集 的实现,它在该 对象集 所提供的功能之上又增加了额外的功能。 对design patterns(设计样式) 爱好者来说,这是一个 decorator(油漆工) 样式。虽然有点异国情调,但确实简单明了。   这些实现是匿名的:不是提供一个公共类,JDK 提供一个 static factory method(静态方法)。 所有这些都可以在仅包含静态方法的Collections API 中找到。   同步包装器(Synchronization Wrappers)   同步包装器将自动同步(线程安全的)添加到一个任意的 对象集。6个 核心 对象集 接口中的每一个都对应一个静态方法: public static Collection synchronizedCollection(Collection c); public static Set synchronizedSet(Set s); public static List synchronizedList(List list); public static Map synchronizedMap(Map m); public static SortedSet synchronizedSortedSet(SortedSet s); public static SortedMap synchronizedSortedMap(SortedMap m);   每一个这样的方法都返回一个由特定 对象集 作为后备的同步(线程安全的)Collection。 为保证串行存取,所有对后备 对象集 的存取都必须通过返回的 对象集 来完成,这一点是至关重要的。 保证这一点的一个简便办法是不要保持对后备 对象集 的引用, 创建这样的同步 对象集 是一个小技巧: List list = Collections.synchronizedList(new ArrayList());   一个用这种方式创建的对象集,每一比特都是线程安全的,就象VectorM那样的"正常"同步 对象集 一样。 在需要并发存取情况下,在返回的 对象集 上迭代时,用户对返回的 对象集 做手工同步是十分必要的。 这是因为迭代是通过对对象集 的多重调用完成的,它必须被编写为一个单独的最小单元操作(atomic operation)。在一个包装器同步的 对象集 上的迭代惯用程序如下所示: Collection c = Collections.synchronizedCollection(myCollection); synchronized(c) { Iterator i = c.iterator(); // Must be in the synchronized block! while (i.hasNext()) foo(i.next()); } 共3页。 1 2 3 8 : 下载本文示例代码


java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)java api之实现(下)
阅读(96) | 评论(0) | 转发(0) |
0

上一篇:java api之算法

下一篇:java api之实现(上)

给主人留下些什么吧!~~