Java并发编程之同步容器与并发容器详解
作者:小志的博客 时间:2023-10-17 04:06:23
一、同步容器
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
标签:java,同步,并发,容器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
一篇文章带你了解Java SpringMVC返回null
2023-11-24 15:18:03
![](https://img.aspxhome.com/file/2023/8/129128_0s.png)
RocketMQ集群消费与广播消费模式
2021-10-16 07:20:45
Android Studio实现智能聊天
2021-10-03 09:56:18
利用Spring Data MongoDB持久化文档数据的方法教程
2023-05-05 02:36:54
java客户端登陆服务器用户名验证
2023-11-09 07:03:09
![](https://img.aspxhome.com/file/2023/3/63283_0s.png)
java实现Dijkstra算法
2021-09-02 23:14:15
![](https://img.aspxhome.com/file/2023/6/97976_0s.jpg)
java编写简易贪吃蛇游戏
2021-08-03 02:53:49
Android编程实现启动界面的方法分析
2022-02-18 14:25:27
![](https://img.aspxhome.com/file/2023/4/139364_0s.jpg)
Android基于opencv实现多通道分离与合并
2022-05-04 09:49:29
![](https://img.aspxhome.com/file/2023/8/110758_0s.gif)
使用 Lambda 取代 Android 中的匿名类
2023-11-16 14:01:04
![](https://img.aspxhome.com/file/2023/6/106616_0s.jpg)
Java枚举类型enum的详解及使用
2023-08-02 14:23:57
C#操作注册表之RegistryKey类
2022-12-11 06:12:53
C#非矩形窗体实现方法
2023-04-09 15:11:39
Java线程池的几种实现方法和区别介绍
2023-12-12 12:46:04
bs架构和cs架构的区别_动力节点Java学院整理
2021-09-18 22:06:18
C#使用委托实现的快速排序算法实例
2022-01-22 18:29:52
Android Studio 在项目中引用第三方jar包的方法
2023-07-18 22:05:49
![](https://img.aspxhome.com/file/2023/1/138311_0s.png)
解析Java设计模式编程中命令模式的使用
2023-11-12 04:49:45
![](https://img.aspxhome.com/file/2023/3/59513_0s.jpg)
c++ 虚继承,多继承相关总结
2022-11-19 12:09:35
![](https://img.aspxhome.com/file/2023/0/120810_0s.png)
C++类中六个默认的成员函数详解
2022-11-25 10:46:30
![](https://img.aspxhome.com/file/2023/4/129534_0s.png)