• 并发编程(二)------并发类容器ConcurrentMap


    并发类容器:

    • jdk5.0以后提供了多种并发类容器来替代同步类容器从而改善性能。
    • 同步类容器的状态都是串行化的。
    • 他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。

    ConcurrentMap接口下有俩个重要的实现:

    • ConcurrentHashMap
    • ConcurrentSkipListMap(支持并发排序功能)

    ConcurrentHashMap原理:

    ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTable,它们有自己的锁。
    只要多个修改操作发生在不同的段上,它们就可以并发进行。把一个整体分成了16个段(Segment),也就是最高支持16个线程的并发修改操作。
    这也是在多线程场景时减小锁的粒度从而降低锁竞争的一种方案。并且代码中大多共享变量使用volatile关键字声明,目的是第一时间获取修改的内容,性能非常好。

     1 package com.bfxy.thread.cord.collection;
     2 import java.util.Map;
     3 import java.util.concurrent.ConcurrentHashMap;
     4 
     5 public class UseConcurrentMap {
     6 
     7 public static void main(String[] args) {
     8         
     9         ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
    10         
    11         map.put("k1", "v1");
    12         map.put("k2", "v1");
    13         map.put("k1", "vv1"); //如果元素已存在 则覆盖掉
    14         map.putIfAbsent("k1", "vvv1"); //如果元素已存在 则不会put
    15         
    16         for(Map.Entry<String, Object> me : map.entrySet()){
    17             System.err.println("key: " + me.getKey() + ", value: " + me.getValue());
    18         }
    19         map.size();
    20     }
    21 
    22 }
  • 相关阅读:
    box-sizing
    max-width
    如何编写高质量CSS
    CSS文字大小单位PX、EM、PT
    jQuery设计思想
    pageX,clientX,offsetX,layerX的那些事
    html块级元素和内联元素区别详解
    centos彻底删除mysql
    删:[CentOS 7] 安装nginx
    CentOS7.0安装与配置Tomcat-7
  • 原文地址:https://www.cnblogs.com/yangyang521/p/10178199.html
Copyright © 2020-2023  润新知