并发场景下的FailFast机制详解
FailFast机制
快速失败机制,是java集合类应对并发访问在对集合进行迭代过程中,内部对象结构发生变化一种防护措施.这种错误检测的机制为这种有可能发生错误,通过抛出java.util.ConcurrentModificationException
package com.gupao.arraylist; import java.util.Iterator; import java.util.List; public class ThreadIterate extends Thread { private List list; public ThreadIterate(List list){ this.list = list; } @Override public void run() { while(true){ for (Iterator iteratorTmp = list.iterator();iteratorTmp.hasNext();) { iteratorTmp.next(); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } } } } }
package com.gupao.arraylist; import java.util.List; public class ThreadAdd extends Thread{ private List list; public ThreadAdd(List list){ this.list = list; } public void run(){ for (int i = 0; i < 100; i++) { System.out.println("loop execute : " + i); try { Thread.sleep(5); list.add(i); }catch (Exception e){ } } } }
package com.gupao.arraylist; import java.util.ArrayList; import java.util.List; public class ThreadMain { private static List list = new ArrayList(); public static void main(String[] args) { new ThreadAdd(list).start(); new ThreadIterate(list).start(); } }
效果 原因: 这是就ArrayList的failFast机制,也就是在多线程操作一个List数据的时候如果出现数据安全问题会直接抛异常。
上一篇:
IDEA上Java项目控制台中文乱码