java创建线程安全的集合
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创建线程安全的集合相关推荐
- Java 创建线程的三种方法比较
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...
- Java创建线程池的方式
Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...
- Java多线程 - Java创建线程的4种方式
文章目录 1. Java创建线程有哪几种方式? 1.1 线程创建方法一:继承Thread类创建线程类 1.2 线程创建方法二:实现Runnable接口创建线程目标类 1.5 线程创建方法三:使用Cal ...
- Java创建线程及配合使用Lambda
一.创建线程三种方式 1.1 继承Thread类创建线程类 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. 创建Thr ...
- java 创建线程的方式
Java创建线程的方式 1 官方API里面的说法 通过官方 API 可以发现创建线程的方式有两种,第一种是通过继承 Thread 类,重写 run 方法:第二种是通过实现 Runnable 接口,创建 ...
- java创建线程(Thread)的5种方式
java创建线程(Thread)的5种方式 方式一:继承于Thread类 方式二:实现Runnable接口 方式三:实现Callable接口 方式四:使用线程池 方式五:使用匿名类 方式一:继承于Th ...
- 想不到吧,Java创建线程的方式只有一种
目录 前言 继承Thread方式 实现Runnable接口 实现callable接口 总结 前言 看到这个标题的小伙伴先别着急喷我--在面试的时候,我们经常会被问到这种基础题:Java创建线程的方式有 ...
- java 创建线程_【80期】说出Java创建线程的三种方式及对比
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...
- java 创建线程_java多线程|创建线程的各种方式
javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...
最新文章
- MySql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)...
- php MySQL快速入门_PHP 连接 MySQL
- extjs4mvc增删改查_asp.net下利用MVC模式实现Extjs表格增删改查
- java反射基本使用,反射泛型参数类型获取
- Sunscreen(POJ-3416)
- mvc做网站怎么在mvc中直接访问.html网页 [问题点数:20分]
- 决定创业失败的除了团队外
- optistruct学习
- 介绍一个被称为十一边形战士的强大模型
- 学习QT之位置相关函数
- MarkDown下载以及入门语法(一)
- Reducing Language Biases in Visual Question Answering with Visually-Grounded Question Encoder 论文笔记
- 计算机行业的薪资真的有那么高吗?讲真,有的一毕业就失业,有的一毕业就拿 20k+
- 青山绿水一枝花...
- 数据产品经理之数据准确性及测试必要性
- 使用Linux命令cURL实现文件定时上传到ftp服务器的程序
- Carrey的第一篇博客
- Steam上不去商店和社区的方法 / SteamCommunity 443/80端口被占用报错解决办法
- 计算机程序设计员英语单词,计算机程序设计员个人英文简历
- P2P原理以及如何实现(整理)
热门文章
- CNN可视化最新研究方法进展(附结构、算法)
- 扎克伯格、张一鸣、宿华都公开道歉,AI算法不灵了吗?
- 妈呀!GitChat 发布 1.9 版本更新公告,这个红色简直亮瞎了我的眼...
- redisTemplate分布式锁演变、redission分布式锁实现!
- GitHub的AI写代码翻车了,会在注释里给你写上what the f***,因为...
- 推荐一套开源通用后台管理系统
- 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目
- 一文深入了解 Redis 内存模型,Redis 的快是有原因的!
- 如何合理地估算线程池大小?
- 天池大赛 + CV语义分割 + 78万奖金:全国数字生态创新大赛来了!