线程安全 && 线程不安全
发布日期:2021-10-06 02:38:19 浏览次数:5 分类:技术文章

本文共 1301 字,大约阅读时间需要 4 分钟。

线程安全对象:ArrayList,LinkedList,HashMap,StringBuilder

ArrayList在内部使用了数组来存储所有元素;

LinkedList通过“链表”也实现了List接口,在LinkedList中,它的内部每个元素都指向下一个元素

 

HashMap一个散列表,它存储的内容是键值对(key-value)映射。

该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

StringBuilder是一个可变对象,可以预分配缓冲区,往StringBuilder中新增字符时,不会创建新的临时对象

注意:对于普通的字符串+操作,并不需要我们将其改写为StringBuilder,因为Java编译器在编译时就自动把多个连续的+操作编码为StringConcatFactory的操作。在运行期,StringConcatFactory会自动把字符串连接操作优化为数组复制或者StringBuilder操作。

线程不安全对象:Vector,HashTable, StringBuffer

Vector(向量)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。

和数组一样,Vector对象的元素也能通过索引访问。

使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。

HashTable类提供了一种在用户定义键结构的基础上来组织数据的手段。

例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。

哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。

StringBuffer是Java早期的一个StringBuilder的线程安全版本,它通过同步来保证多个线程操作StringBuffer也是安全的,但是同步会带来执行速度的下降。

StringBuilder和StringBuffer接口完全相同。

 

interface                                           non-thread-safe                                      thread-safe

List                                                    ArrayList                                                CopyOnWriteArrayList

Map                                                   HashMap                                               ConcurrentHashMap

Set                                                    HashSet/TreeSet                                    CopyOnWriteArraySet

Queue                                               ArrayDeque/LinkedList                           ArrayBlockingQueue/LinkedBlockingQueue

Deque                                               ArrayDeque/LinkedList                           LinkedBlockingQueue

java.util.Collections工具类还提供了一个旧的线程安全集合转换器:

把List类包装成线程安全:Collections.synchronizedList(list);

把Set类包装成线程安全:Collections.synchronizedSet(set);

把HashMap类包装成线程安全:Collections.synchronizedMap(hashMap);

转载地址:https://blog.csdn.net/luxuiary/article/details/105637115 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux常用服务类相关命令?
下一篇:什么是modCount?

发表评论

最新留言

不错!
[***.144.177.141]2024年04月14日 16时46分35秒