zoukankan      html  css  js  c++  java
  • Map的使用,LinkedHashMap ConcurrentHashMap

    LinkedHashMap 会将put进去的key value  按照次序进行遍历。

    ConcurrentHashMap 1.允许并发的读操作。

      2. 性能好。根据默认的并发级别(concurrency level),Map被分割成16个部分,并且由不同的锁控制。这意味着,同时最多可以有16个写线程操作Map。由只能一个线程进入变成同时可由16个写线程同时进入(读线程几乎不受限制),性能的提升是显而易见的。但由于一些更新操作,如put(),remove(),putAll(),clear()只锁住操作的部分,所以在检索操作不能保证返回的是最新的结果。

      3. 线程安全性弱。CHM在put操作时并没有对整个Map加锁,所以一个线程正在put(k,v)的时候,另一个线程调用get(k)会得到null,这就会造成一个线程put的值会被另一个线程put的值所覆盖。CHM提供的putIfAbsent(key,value)方法原子性,同时避免了线程竞争的风险。CHM适用于读者数量超过写者时,当写者数量大于等于读者时,CHM的性能是低于Hashtable和synchronized Map的。这是因为当锁住了整个Map时,读操作要等待对同一部分执行写操作的线程结束。

      4. 优势。CHM适用于做cache,在程序启动时初始化,之后可以被多个请求线程访问。

  • 相关阅读:
    正则表达式30分钟入门教程
    oracle常用的字符和字符串处理类函数
    [转载]C#实现软件自动更新思路
    ORACLE函数介绍
    xml 文件操作类
    oracle 主键生成策略
    wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
    NSIS开始...
    Oracle分析函数详述
    常用正则表达式收集
  • 原文地址:https://www.cnblogs.com/difme/p/7085171.html
Copyright © 2011-2022 走看看