List:

public static  List<String> dataList = Collections.synchronizedList(new ArrayList<String>());

Map:

public static  Map<String,String> dataMap = new ConcurrentHashMap <String,String>();

这里的线程安全仅仅指的是使用它自身提供的函数,如:

dataList.add("数据一");
dataList.remove("数据二");

我们可不做任何同步,但如果是非原子操作,比如:

if(!dataList.isEmpty()) { dataList.add("数据三");
}

我们很难保证,在调用了isEmpty()之后,add()之前没有其他线程修改这个dataList。
所以对于这种情况,我们需要自己同步:

public static void addDataList(String dataStr){synchronized(dataList) { if(!dataList.isEmpty()) { dataList.add(dataStr);} }
}

转载于:https://blog.51cto.com/1197822/2157266

java创建线程安全的集合相关推荐

  1. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  2. Java创建线程池的方式

    Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...

  3. Java多线程 - Java创建线程的4种方式

    文章目录 1. Java创建线程有哪几种方式? 1.1 线程创建方法一:继承Thread类创建线程类 1.2 线程创建方法二:实现Runnable接口创建线程目标类 1.5 线程创建方法三:使用Cal ...

  4. Java创建线程及配合使用Lambda

    一.创建线程三种方式 1.1 继承Thread类创建线程类 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. 创建Thr ...

  5. java 创建线程的方式

    Java创建线程的方式 1 官方API里面的说法 通过官方 API 可以发现创建线程的方式有两种,第一种是通过继承 Thread 类,重写 run 方法:第二种是通过实现 Runnable 接口,创建 ...

  6. java创建线程(Thread)的5种方式

    java创建线程(Thread)的5种方式 方式一:继承于Thread类 方式二:实现Runnable接口 方式三:实现Callable接口 方式四:使用线程池 方式五:使用匿名类 方式一:继承于Th ...

  7. 想不到吧,Java创建线程的方式只有一种

    目录 前言 继承Thread方式 实现Runnable接口 实现callable接口 总结 前言 看到这个标题的小伙伴先别着急喷我--在面试的时候,我们经常会被问到这种基础题:Java创建线程的方式有 ...

  8. java 创建线程_【80期】说出Java创建线程的三种方式及对比

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...

  9. java 创建线程_java多线程|创建线程的各种方式

    javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...

最新文章

  1. MySql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)...
  2. php MySQL快速入门_PHP 连接 MySQL
  3. extjs4mvc增删改查_asp.net下利用MVC模式实现Extjs表格增删改查
  4. java反射基本使用,反射泛型参数类型获取
  5. Sunscreen(POJ-3416)
  6. mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
  7. 决定创业失败的除了团队外
  8. optistruct学习
  9. 介绍一个被称为十一边形战士的强大模型
  10. 学习QT之位置相关函数
  11. MarkDown下载以及入门语法(一)
  12. Reducing Language Biases in Visual Question Answering with Visually-Grounded Question Encoder 论文笔记
  13. 计算机行业的薪资真的有那么高吗?讲真,有的一毕业就失业,有的一毕业就拿 20k+
  14. 青山绿水一枝花...
  15. 数据产品经理之数据准确性及测试必要性
  16. 使用Linux命令cURL实现文件定时上传到ftp服务器的程序
  17. Carrey的第一篇博客
  18. Steam上不去商店和社区的方法 / SteamCommunity 443/80端口被占用报错解决办法
  19. 计算机程序设计员英语单词,计算机程序设计员个人英文简历
  20. P2P原理以及如何实现(整理)

热门文章

  1. CNN可视化最新研究方法进展(附结构、算法)
  2. 扎克伯格、张一鸣、宿华都公开道歉,AI算法不灵了吗?
  3. 妈呀!GitChat 发布 1.9 版本更新公告,这个红色简直亮瞎了我的眼...
  4. redisTemplate分布式锁演变、redission分布式锁实现!
  5. GitHub的AI写代码翻车了,会在注释里给你写上what the f***,因为...
  6. 推荐一套开源通用后台管理系统
  7. 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目
  8. 一文深入了解 Redis 内存模型,Redis 的快是有原因的!
  9. 如何合理地估算线程池大小?
  10. 天池大赛 + CV语义分割 + 78万奖金:全国数字生态创新大赛来了!