我收藏的链接(28)
- WAP建站不容易!WAP(wml)开发FAQ | wap建站服务网
- WML Tutorial: Learn How to Submit Form Data to the Server in WML
- 一个WML文档例子
- WML Reference
- WML参考文档
- [jvm-l] Calling non-Java languages from JavaScript
- 通过web页面上的 JavaScript调用页面上任何的applets
- 脚本调试工具 Microsoft Script Debugger - 河之堤 - CSDNBlog
- Bug ID: 6358034 NPE in Win32GraphicsEnvironment.displayChanged when switching display mode
- awt-eventqueue-0 win32graphicsenvironment
- Seam Tutorial/Tips : Weblog
- Raible Designs | RESTful Web Applications with Subbu Allamaraju
- 剖析CTI软件产品(下) - 客户世界 - 呼叫中心 | 客户管理 | 数据营销 | 服务外包 - [http://www.ccmw.net]
- 剖析CTI软件产品(上) - 客户世界 - 呼叫中心 | 客户管理 | 数据营销 | 服务外包 - [http://www.ccmw.net]
- JavaPassion 中文站 - 激情无限
- 国际:什么是程序员的优秀品质? , 开发者,程序员,实践,代码,测试者,技术,编程,方法,知识,语言, , - CSDN 新闻
- 探秘Google数据中心:运行服务器远超20万台 - 百度通站长资讯网 通天下站长
- InfoQ: 辩论:Maven是正确的构建工具吗?
- 整理了一天的JAVA面试题(先保存下) - admin - JavaEye技术网站
- Flexigrid for jQuery : Web 2.0 Javascript Data Grid
- Java IDL: Interoperable Naming Service (INS) Example - JDK 5 Documentation v1.4.1, Java 2 SDK 英文文档 - 在线文档 - JAVA 编程资料牛鼻站
- 基于JAVA实现CORBA应用--oofrank的博客 oo java .Net
- Eclipse中corba环境的建立 - 企业应用 - Java - JavaEye论坛
- 应用CIM模型进行系统集成 - 输配电设备网
- ConcurrentModificationException | Zeal Blog - 泽欧里的网络日志
- java.util.ConcurrentModificationException异常
- ConcurrentModificationException (Java 2 Platform SE 5.0)
- java.util.ConcurrentModificationException异常
- InfoQ: 讨论:衡量程序员的工作效率
- 用J2ME收发短信 -- Wireless Messaging API - 中国JAVA手机网
- JBoss - Jetty - Codehaus
- Jetty JBoss Integration.
- InfoQ: 缓存系统MemCached的Java客户端优化历程
- 50个Windows软件的免费替代品 | 精华之家|HIGHTHOUSE
- Windows系统必备的30个免费开源软件 (转载) - Free Programming - 博客园
如何用WAP蜂窝电话上传文件
关于ConcurrentModificationException异常
关于ConcurrentModificationException异常
在Java API里已经解释了这个ConcurrentModificationException异常的来历:
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
例如,某个线程在 Collection 上进行迭代时,通常不允许另一个线程修改该 Collection。通常在这些情况下,迭代的结果是不明确的。如果检测到这种行为,一些迭代器实现(包括 JRE 提供的所有通用 collection 实现)可能选择抛出此异常。执行该操作的迭代器称为快速失败 迭代器,因为迭代器很快就完全失败,而不会冒着在将来某个时间任意发生不确定行为的风险。
注意,此异常不会始终指出对象已经由不同 线程并发修改。如果单线程发出违反对象协定的方法调用序列,则该对象可能抛出此异常。例如,如果线程使用快速失败迭代器在 collection 上迭代时直接修改该 collection,则迭代器将抛出此异常。
注意,迭代器的fail-fast快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败操作会尽最大努力抛出 ConcurrentModificationException。因此,为提高此类操作的正确性而编写一个依赖于此异常的程序是错误的做法,正确做法是:ConcurrentModificationException 应该仅用于检测 bug。
Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭 代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。
有意思的是如果你的 Collection / Map 对象实际只有一个元素的时候, ConcurrentModificationException 异常并不会被抛出。这也就是为什么在 javadoc 里面指出: it would be wrong to write a program that depended on this exception for its correctness: ConcurrentModificationException should be used only to detect bugs.
下面的代码没有问题:
- import java.util.*;
- public class TryIteratorRemove {
- public static void main(String [] args){
- Collection<String> myCollection = new ArrayList<String>(10);
- myCollection.add("123");
- myCollection.add("456");
- myCollection.add("789");
- int i=0;
- for(Iterator it = myCollection.iterator();it.hasNext();) {
- String myObject = (String)it.next();
- System.out.println(myObject);
- i++;
- if(i==1){
- //myCollection.remove(myObject); //这行代码有问题,会抛出ConcurrentModificationException
- it.remove();
- }
- }
- System.out.println("After remove,the size of myCollection is: " +
- myCollection.size()+" \n and its content is: ");
- for(String s : myCollection){
- System.out.println(s);
- }
- }
- }
我收藏的链接(27)
- InfoQ: Grails做足功夫 全力迈向1.0版
- 让Thunderbird成为GTD工具 at live@haliluya
- Solidot | 用Gmail做GTD管理
- 100_Linux_Tips_And_Tricks
- 开发技术以及IT书籍
- Javascript Graphical / Virtual Keyboard Interface
- JavaScript Virtual Keyboard (Study)
- Abhi On Java: Using Quartz Scheduler in a cluster
- Tools for Getting Things Done - Getting Things Done Wiki
- Tools for GTD (Getting Things Done)
- 七大搜索引擎博客搜索的博客提交入口网址 - 菠菜博
- Web 领域25个最有影响力的人(上) , huffington,bezos,创办,创业,领域,baker,ballmer,投资,ceo,微软, , - CSDN 新闻
- InfoQ: 好的测试应该具备哪些特质?
- hipergate :. Free Open Source CRM Groupware and Intranet Software
- RUP与Scrum的对话
- B-Trees
- jdbm开源文件数据库在全文检索中的使用 - gdsean的专栏 - CSDNBlog
- API: treeview YAHOO.widget.TextNode (YUI Library)
- yui tree组件 API
- 2008年(第五届)《世界品牌500强》排行榜
- 2008年《世界品牌500强》排行榜 名单
- The ultimate jQuery Plugin List | Kollermedia.at
- jquery插件
- Aptana Studio | Aptana
在Spring中使用Quartz任务调度支持集群
虽然在Quartz上有配置Quartz集群Clustering ,但是在Spring中使用Quartz任务调度并支持集群系统却有些问题,下面介绍解决办法:
