2012年4月13日

JAVA 笔记 CopyOnWriteArrayList

摘要: 在写代码时遇到了一个ConcurrentModificationException异常,百度了下发现是因为在使用Iterator遍历时原数据发生了变化导致的。业务的需求如下: 有一个数据监听器列表,当系统收到数据时遍历列表中的每一项并发送数据。当遍历的过程中有可以会新增或删除相应的监听器。 这种情况下可以使用CopyOnWriteArrayList 来实现监听器列表。 原理如下: JAVA中将引用从一个对象移到另外一个对象不需要消耗CPU时间,可以看做是一个原子操作。 JAVA中如果一个对象仍旧存在引用,则不会被CG回收。 CopyOnWriteArrayList就是根... 阅读全文

posted @ 2012-04-13 16:42 心笑峰 阅读(1707) 评论(1) 推荐(0) 编辑

JAVA 笔记 ReadWriteLock

摘要: ReadWriteLock适用于: 同一个对象,允许多个线程同时读,只允许一个线程写,且读写不能同时进行。 用法:ReadWriteLocklock=newReentrantReadWriteLock();lock.readLock().lock();try{//读取数据}finally{lock.readLock().unlock();}lock.writeLock().lock();try{//写数据}finally{lock.writeLock().unlock();} 阅读全文

posted @ 2012-04-13 12:28 心笑峰 阅读(386) 评论(0) 推荐(0) 编辑

导航