JAVA里面有一个并发容器CopyOnWriteArrayList用于支持并发读写List 容器,稍微查了下这个说明,这个容器在并发写的情况下效率很低。因此使用场景应该在并发读远大于并发写的情况下使用这个容器。
这里写了一个多线程程序来读取现有的list对象。上代码:
package com.lenovo.plm.dms.p1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
Map<Long,Integer> map = new HashMap<Long,Integer>();
for(int i = 0;i<1000;i++){
list.add(""+i);
}
int pcount = Runtime.getRuntime().availableProcessors();
long start = System.currentTimeMillis();
for(int i=0;i<pcount;i++){
Thread t = new MyThread1(list,map);
map.put(t.getId(),Integer.valueOf(i));