集合系列日记(17.5.10)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合系列日记(17.5.10)相关的知识,希望对你有一定的参考价值。
fail-fast
fail-fast是collection的一种错误机制,当多个线程对同一个容器进行操作的时候就会产生fail-fast事件,当有两个线程a和b,当线程a对容器进行遍历时,线程b改变了容器的东西,就会进行报错.
public class Test { private static List<String> list=new ArrayList<String>(); public static void main(String[]args){ ThreadOne t1=new ThreadOne(); ThreadTwo t2=new ThreadTwo(); t1.start(); t2.start(); } private static void printAll(){ System.out.println(" "); String value=null; Iterator iter=list.iterator(); while(iter.hasNext()){ value=(String)iter.next(); System.out.print(value+","); } } //ThreadOne private static class ThreadOne extends Thread{ public void run(){ for(int i=0;i<6;i++){ list.add(String.valueOf(i)); printAll(); } } } //ThreadTwo private static class ThreadTwo extends Thread{ public void run(){ for(int i=7;i<12;i++){ list.add(String.valueOf(i)); printAll(); } } } }
怎么解决多线程同时去访问呢?可以去使用java.util.concurrent包,将private static List<String>list=new ArrayList<String>;换成
private static List<String>list=new CopyOnWriteArrayList<String>();
以上是关于集合系列日记(17.5.10)的主要内容,如果未能解决你的问题,请参考以下文章