JUC--ConcurrentHashMap

HashMap HashTable安全

HashTable锁住整个表  会存在复合操做上的问题“若不存则添加” “若存在则删除” 也是不安全的  效率低并发

 

ConcurrentHashMap:采用锁分段机制  并发级别:concurrentLevel并发级别 默认16  ide

  支持多个thread同事访问一个hashmap 而且线程安全spa

jdk1.8 将锁分段改为CAS线程

ConcurrentSkipListMap一般优于同步的TreeMapcode

当指望的读书和遍历远远大于列表的更新数时,CoprOnWriteArrayList优于同步的ArrayListblog

 

 

CopyOnWriteArrayList:在迭代的同时 向list中添加数据 发生并发修改该异常ConcurrentModificationExceptionip

public class TestCOAL {
    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            new Thread(new HelloThread()).start();
        }
    }
}
class HelloThread implements  Runnable{
    private static List<String> list =Collections.synchronizedList(new ArrayList<>());
    static {
        list.add("AA");
        list.add("BB");
        list.add("CC");
    }
    @Override
    public void run() {
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
            list.add("AA");
        }
    }
}

使用CopyOnWriteArrayList可以解决以上问题:写入并复制同步

 

private static List<String> list =new CopyOnWriteArrayList<>();

CopyOnWriteArrayList进行添加操做多的时候 效率低,每次都要复制  当进行并发迭代操做多时能够选择。hash

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息