线程安全问题:

在添加时候并没有进行安全考虑,枷锁

所以是线程不安全的,接下来进行代码测试;

package com.mmall.concurrency.example.commonUnsafe;

import com.mmall.concurrency.annoations.NotThreadSafe;
import lombok.extern.slf4j.Slf4j; import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore; public class HashMapExample { // 请求总数
public static int clientTotal = ; // 同时并发执行的线程数
public static int threadTotal = ; private static Map<Integer, Integer> map = new HashMap<>(); 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 = ; i < clientTotal; i++) {
final int count = i;
executorService.execute(() -> {
try {
semaphore.acquire();
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);
}
}

运行三次:

所以hashmap是线程不安全的,那么我们在代码里面怎么还要用呢,我们只是局部使用,并没有在多线程环境下使用,所以并不会出现线程安全问题

最新文章

  1. Jmeter响应内容为文件
  2. linux 命令行中常用光标移动快捷键
  3. subprocess模块在Windows下调用失败问题
  4. 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
  5. Android——复选按钮和开关按钮
  6. ls 知识点
  7. &#39;mysql&#39; 不是内部或外部命令,也不是可运行的程序或批处理文件的解决办法
  8. 锋利的jquery-validation
  9. ajaxPro用法
  10. git add相关
  11. jdom.jar导入问题
  12. Sass实战 sass官网
  13. 【JAVAWEB学习笔记】25_基础加强:类加载器、注解 @xxx和动态代理
  14. 集群通信组件Tribes之整体介绍
  15. C#开发微信支付之企业向用户付款
  16. Javascript async异步操作库简介
  17. CrackME 2011 # 2 逆向练习解题思路
  18. 容器内部设置JVM的Heap大小
  19. 常用 对象检测 api
  20. 字符串 dfs

热门文章

  1. AngularJS入门之如何快速上手
  2. 11-19网页基础--第二部分CSS样式表基本概念
  3. oracle --(三)数据段(segment)
  4. 使用线程池优化Echo模型
  5. 爬取google的搜索结果并保存
  6. JavaWeb_增强for循环
  7. 更新anaconda及所有包
  8. Oracle数据库之多表查询一
  9. UVa 1204 Fun Game (状压DP)
  10. MySQL安装与管理