知识大全 拷贝枚举器以加强效率

Posted

篇首语:心宽一寸,路宽一丈,若不是心宽似海,哪有人生风平浪静。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 拷贝枚举器以加强效率相关的知识,希望对你有一定的参考价值。

Java技巧:拷贝枚举器以加强效率  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  当一个代码段正对集合进行枚举而另一段代码试图修改这个集合时 就会发生常见的多线程问题 解决这一问题的方法是在处理前拷贝一份枚举变量     在撰写多线程代码时 你遇到过多少次下面的提示   Exception in thread main java util ConcurrentModificationException     这个异常产生的原因有几个 一是直接对集合调用删除操作而不是在枚举器上 二是不同的线程试图对集合进行增删操作的时候     这个解决办法的第一步就是同步代码 使得你在枚举的时候其它的线程不能增删记录 但是如果每个枚举过程要进行复杂的计算或者是数据库访问的一部分的话 这个同步就会导致可怕的后果 为了减少负面影响 可以拷贝一个只读的枚举器 去掉同步 然后采用下列代码所示的方法      private List list;   public void add(Object obj)    synchronized(list)    list add(obj);         public void perform( )    Iterator iterator = null;   synchronized(list)    iterator = new CopiedIterator(erator( ));      while(iterator hasNext( ))    // perform resource or cpu hungry work        重要的是记住 CopiedIterator不是一个克隆 只是一个只读的拷贝 所以它并没有保持原有的全部功能 最重要的是 不能再调用CopiedIterator remove方法了 CopiedIterator remove的实现如下      public class CopiedIterator implements Iterator    private Iterator iterator = null;   public CopiedIterator(Iterator itr)    LinkedList list = new LinkedList( );   while(itr hasNext( ))    list add(itr next( ));      erator = erator( );      public boolean hasNext( )    return erator hasNext( );      public void remove( )    throw new UnsupportedOperationException( This is a read only iterator    );      public Object next( )    return erator next( );        枚举器的只读拷贝将用在同步状态上的时间减少到最小 因此可以增强全局的效率      cha138/Article/program/Java/JSP/201311/19628

相关参考

知识大全 C# 语言规范--1.11 枚举

C#语言规范--1.11枚举  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  枚举类型声明为一组相

知识大全 C#浅拷贝与深拷贝区别

C#浅拷贝与深拷贝区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  也许会有人这样解释C#中浅

知识大全 枚举网打印机

Delphi必学技巧:枚举网打印机  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在某些情况下我们需

知识大全 Hibernate如何映射枚举类型

Hibernate如何映射枚举类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问题  Jav

知识大全 Javascript中浅拷贝与深拷贝的实现

Javascript中浅拷贝与深拷贝的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  jav

知识大全 自定义控件中使用枚举类型的属性

  在控件中定义枚举类型的属性  publicenumDTableStateSelectShowAddnew=SaveAddnew=ShowEdit=SaveEdit=Delete=Show=List

知识大全 驯服Tiger之深入研究枚举类型

驯服Tiger之深入研究枚举类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基础知识    

知识大全 Java中的枚举器(反复器)

Java中的枚举器(反复器)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在任何集合类中必须通

知识大全 C#枚举中的位运算

C#枚举中的位运算  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文介绍C#位运算的处理方法第

知识大全 了解VB.NET中的常量与枚举

了解VB.NET中的常量与枚举  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在程序运行的过程中