• JDK中ConcurrentHashMap效率测试


     比较HashMap HashTable 和ConcurrentHashMap的效率.

    一般情况下,达到一定的数量之后JDK1.5之后提供的ConcurrentHashMap集合类的效率是前两者的3~4倍左右.

    前两种集合类的效率比较接近. 

     ConcurrentHashMapTest.java

     1 import java.util.Collections;
     2 import java.util.HashMap;
     3 import java.util.HashSet;
     4 import java.util.Hashtable;
     5 import java.util.Map;
     6 import java.util.concurrent.ConcurrentHashMap;
     7 
     8 //测试三种并发集合的读写效率
     9 public class ConcurrentHashMapTest {
    10 
    11     public static void main(String[] args) {
    12         //HashMap不是线程安全的,通过 Collections.synchronizedMap()转换成线程安全的.
    13         final Map<Integer, Integer> hm = Collections.synchronizedMap(new HashMap<Integer, Integer>());
    14         //HashTable内部自带同步,线程安全的.
    15         final Map<Integer, Integer> ht = new Hashtable<Integer, Integer>();
    16         //JDK1.5之后提供的并发集合.
    17         final Map<Integer, Integer> chm = new ConcurrentHashMap<Integer, Integer>();
    18         putMap(hm);//输出:13321
    19         putMap(ht);//输出:11834
    20         putMap(chm);//输出:8312  数据量达到一定程度之后,会比前两种快3~4倍左右.
    21         
    22     }
    23 
    24     private static void putMap(final Map<Integer, Integer> hm) {
    25         long begin = System.currentTimeMillis();
    26         for (int k = 0; k < 100; k++) {//为了让效果更明显,再循环100次.
    27             for (int i = 0; i < 1000; i++) {//1000条线程
    28                 final int key = i;
    29                 new Thread(new Runnable() {
    30                     @Override
    31                     public void run() {
    32                         for (int j = 0; j < 1000; j++) {//每条线程向其中添加1000次
    33                             hm.put(key, j);
    34                         }
    35                     }
    36                 }).start();
    37             }
    38         }
    39         long end = System.currentTimeMillis();
    40         System.out.println(end - begin);
    41     }
    42 }
  • 相关阅读:
    css选择器
    有关cookies与session的详细信息
    06OC之内存管理
    04OC之分类Category,协议Protocol,Copy,代码块block
    IOS学习目录
    03OC的类的补充
    02OC的类和对象
    02第一个OC程序
    01OC概述
    02快速学习ExtJs之---第一个HelloWord!
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/6209275.html
Copyright © 2020-2023  润新知