zoukankan      html  css  js  c++  java
  • java集合线程安全测试

    package com.cxy;
    
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.Map;
    import java.util.concurrent.*;
    
    /**
     * Created by Administrator on 2017/4/10.
     */
    public class CxyDemo {
        // 请求总数
        public static int clientTotal = 5000;
    
        // 同时并发执行的线程数
        public static int threadTotal = 200;
    
        //private static Map<Integer, Integer> map = new HashMap<>();
       // private static ConcurrentHashMap<Integer, Integer> map = new ConcurrentHashMap<>();
        private static Map<Integer, Integer> map = new Hashtable<>();
    
        public static void main(String[] args) throws Exception {
            //可缓存线程池
            ExecutorService executorService = Executors.newCachedThreadPool();
            final Semaphore semaphore = new Semaphore(threadTotal);
            final CountDownLatch countDownLatch = new CountDownLatch(clientTotal);
            for (int i = 0; i < clientTotal; i++) {
                final int count = i;
                //lambda表达式执行任务
                executorService.execute(() -> {
                    try {
                        semaphore.acquire();
                        //执行的业务逻辑,可以模仿http请求,发送高并发
                        update(count);
                        semaphore.release();
                    } catch (Exception e) {
                        // log.error("exception" , e);
                    }
                    countDownLatch.countDown();
                });
            }
            countDownLatch.await();
            executorService.shutdown();
            System.out.println(map.size());
            //log.info("size:{}" , map.size());
        }
    
        private static void update(int i) {
            //向集合中添加数据
            map.put(i, i);
        }
    
    }

    在以上代码中可以运行看出测试:

    hahsmap的多次运行结果不一样

    concurrentHashmap结果一定是5000,

    hashtable也一定是5000,

  • 相关阅读:
    Hadoop学习之安装HDFS
    常见的6种数据结构
    maven 编译出错 Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean
    jquery解决js对象、数组赋值时的引用传递
    405 method not allowed(方法不被允许)
    身份证件号 正确性检查方法
    svn 提交信息模板
    idea 使用说明
    java-System类
    java-Integer 类
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10722890.html
Copyright © 2011-2022 走看看