多线程学习笔记6之容器

Hashtable 同步表

跟HashMap一样,不同的是Hashtable线程安全的,效率比较低,锁的整个表,只支持一个线程同时运行,一般使用它的替代者ConcurrentHashMap

ConcurrentHashMap

同步的Hash表数据结构,替代Hashtable,效率比Hashtable高(线程数有关,线程数越多越有优势),下面是国外的一张比较Hashtable和ConcurrentHashMap效率的测试表

Threads ConcurrentHashMap Hashtable
1 1 1.03
2 2.59 32.4
4 5.58 78.23
8 13.21 163.48
16 27.58 341.21
32 57.27 778.41
HashMap 表

存放key、value键值对的数据结构,特点是读比较块,而写比较慢

LinkedHashMap 链表

HashMap加了链表的特性,拥有HashMap的全部功能,但因为加了链的功能,所以其特点是写比较快而读比较慢

TreeMap 树表

底层实现是红黑树,排序的表,读效率比较高,写效率偏低

ConcurrentSkipHashMap 跳表

跳表是对元素进行排序了的读写都比较快的数据结构,读取一个数,如下图所示

在这里插入图片描述

CopyOnWriteArrayList

写时复制,在写的时候会复制一份原数组长度+1的新数组,并且将新的元素加到最后面一个位置,因此写的效率不高,它是线程安全的。而在读的时候是不需要加锁的,因为读的跟写的是2份一模一样的数据,因此效率较高

简单使用代码如下

public class CopyOnWriteArrayListDemo {
    public static void main(String[] args) {
        List<String> lists =
                //new ArrayList<>(); //这个会出并发问题!
                //new Vector();
                new CopyOnWriteArrayList<>();
        Random r = new Random();
        Thread[] ths = new Thread[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值