当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

java api之实现(下)[Java编程]

赞助商链接



  本文“java api之实现(下)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

包装器实现

包装器实现是一种将它们的实际工作拜托给一个特定对象集的实现,它在该 对象集 所供应的功效之上又增添了额外的功效.对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());
}

在一个同步 Map 的 Collection视图上的迭代惯用程序与上述程序类似,但有一个诀窍,那就是,当在同步 Map 的Collection视图上迭代时, 用户必须对同步 Map 做手工同步,而不是对 Collection视图本身做同步:

Map m = Collections.synchronizedMap(new HashMap());
...
Set s = m.keySet(); // Needn"t be in synchronized block
...
synchronized(m) { // Synchronizing on m, not s!
Iterator i = s.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}

包装器实现的一个小的缺陷是你不能履行一个包装器实现的非接口操作.因此,比方在上面的 List 的例子中,你就不能调用包装的ArrayList上的ensureCapacity 操作.


  以上是“java api之实现(下)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .