public class AddRemoveListElement { public static void main(String args[]) { List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); for (String s : list) { if (s.equals("B")) { list.remove(s); } } //foreach循环等效于迭代器 /*Iterator<String> iterator=list.iterator(); while(iterator.hasNext()){ String s=iterator.next(); if (s.equals("B")) { list.remove(s); } }*/ } }
《java 并发编程实战》基础构建笔记
5.1.1 同步容器类的问题,在多线程的情况下,如,a 线程 对vector 执行 get 操作, 另外一个线程对vector 进行delete 操作,由于线程交替执行,可能有一个线程获取下标 为9 但是另外一个线程已经删除了下标为9的数据,导致数组下标越界,所以对同步容器进行复合操作,在高并发的情况下,就需要客户端加锁 5.1.2 迭代器与并发修改错误,在使用迭代器的过程中,可能会出现并发修改错误问题,例如 A线程删除了一个元素,当B线程发现计数器发生改变时,会抛出并发修改错误溢出,这个是一个jdk 的 设计,使用fail-fast ,使用快速失败模式,通知使用者已经发生异常了,在单线程的情况下也会出现,当使用迭代器模式删除数据的时候,会产生错误
猜你喜欢
转载自lliang54.iteye.com/blog/2384511
今日推荐
周排行