随笔-59  评论-31  文章-0  trackbacks-0
java并发
java.util.ConcurrentModificationException      摘要: Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性  阅读全文
posted @ 2012-01-06 17:14 RoyPayne 阅读(192) | 评论 (0)  编辑
如何在java中正确使用volatile      摘要:   Java? 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。  阅读全文
posted @ 2012-01-06 10:44 RoyPayne 阅读(282) | 评论 (1)  编辑
Lock和Synchronized
posted @ 2011-12-28 17:22 RoyPayne 阅读(252) | 评论 (0)  编辑