Java并发编程之同步容器与并发容器详解
作者:小志的博客 发布时间:2023-10-17 04:06:23
标签:java,同步,并发,容器
一、同步容器
1、Vector——>ArrayList
vector 是线程(Thread)同步(Synchronized)的,所以它也是线程安全的;
Arraylist是线程异步(ASynchronized)的,是不安全的;
2、Hashtable——>HashMap
Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;
HashMap是非synchronized,这意味着HashMap是非线程安全的;
3、Collections集合中——>synchronizedXXX
ArrayList<Object> list = new ArrayList<>();
Collections.synchronizedList(list);
HashMap<Object, Object> map = new HashMap<>();
Collections.synchronizedMap(map);
Set<Object> set = new HashSet<>();
Collections.synchronizedSet(set);
以synchronizedList为例:synchronizedList返回了SynchronizedList<>(list)),SynchronizedList又是一个内部静态类,该内部静态类中的add()、set()、get()等方法都在方法内部添加了synchronized关键字,如下图:
二、并发容器
1、CopyOnWriteArrayList
写操作高效率并发并且是线程安全的;
读操作无锁的ArrayList;
2、ConcurrentHashMap
是HashMap的一个线程安全的、支持高效并发的版本,使用了锁分段技术来保证线程安全;
来源:https://wwwxz.blog.csdn.net/article/details/117637437


猜你喜欢
- 实例如下所示:private static String savefile = "E:\\test.txt";priva
- 在我们深入探讨C#序列化和反序列化之前我们先要明白什么是序列化,它又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。序列化就
- 一、ViewPageIndicator开源框架的基本用法 我们先得去Github上面下载这个库,下载地址:https://github.co
- 在有些情况下,有很多列表不能一次性显示完整,需要对其进行分页处理博主自己也写了一个分页系统,在这里记录下来,方便以后直接拿来使用这篇文章De
- 相对于Swing来说,JavaFX在UI上改善了很多,不仅可以通过FXML来排版布局界面,同时也可以通过CSS样式表来美化UI。其实在开发J
- Java 官网对Looper对象的说明:public class Looperextends ObjectClass used to run
- 60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计
- java读取文件里面部分汉字内容乱码读取一个txt文件,到代码中打印出来,发票有部分汉字的内容是乱码的。我开始的方式是这样的, 如下,这是完
- 我想到使用Redis的订阅发布模式是用来解决推送问题的~。对于概念性的叙述,多多少少还是要提一下的:什么是Redis发布订阅?Redis发布
- 假定你已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。一、cpu占用过高cpu占用过高要分情况讨论,
- 遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。它能解决很多问题,
- 首先使用PImage来实例化对象,再通过loadImage赋值,两层for循环遍历图片上的像素点,每隔5个像素点,画一个直径为3的圆。颜色通
- 前言:在实际的应用开发中,很多时候往往因为一些不可控的因素导致程序出现一些错误,这个时候就要及时把异常信息反馈给客户端,便于客户端能够及时地
- springboot项目启动,访问报404错误今天在做一个springboot项目的时候,是接着别人的项目写的,写完之后想做一下测试,于是就
- android root权限破解分析许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权
- 1.BIO1.1 简述BIO是同步阻塞IO,所有连接都是同步执行的,在上一个连接未处理完的时候是无法接收下一个连接1.2 代码示例在上述代码
- 在Java 8之前,对集合进行排序需要为排序中使用的比较器 Comparator 创建一个匿名内部类:new Compa
- 比较简单的一个控件,就是加些逻辑处理而已,以前貌似是直接监听的,封装起来方便点public class AccountTxtView ext
- 目录UI组件封装的考虑要点文本输入框接口定义代码实现组件使用踩坑记录总结UI组件封装的考虑要点封装一个 UI 组件,通常需要考虑下面这三个点
- Java 切割字符串的几种方式//以data 为案例参数。String data = "2019-01-