解决ArrayList线程不安全

前些天作项目时,程序出现意外的问题,经后来分析是使用ArrayList这个线程不安全的方法致使api

解决这个问题一般有两种方法(我的认为)安全

一:使用synchronized关键字,这个你们应该都很熟悉了,不解释了;性能

二:使用Collections.synchronizedList();使用方法以下:线程

        假如你建立的代码以下:List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();接口

        那么为了解决这个线程安全问题你能够这么使用Collections.synchronizedList(),如:文档

        List<Map<String,Object>> data=Collections.synchronizedList(new ArrayList<Map<String,Object>>());io

       其余的都没变,使用的方法也几乎与ArrayList同样,你们能够参考下api文档;List

额外说下 ArrayList与LinkedList;这两个都是接口List下的一个实现,用法都同样,但用的场所的有点不一样,ArrayList适合于进行大量的随机访问的状况下使用,LinkedList适合在表中进行插入、删除时使用,两者都是非线程安全,解决方法同上(为了不线程安全,以上采起的方法,特别是第二种,实际上是很是损耗性能的)。程序

相关文章
相关标签/搜索