2集合和同步容器归类

list
arraylist 数组
linkedList 双向链表(堆栈和队列都可以使用)
ArrayDeque 循环数组(堆栈和队列都可以使用,优先于linkedList)
vectory  同步容器,数组
Stack  extends vectory 堆栈
Collections.synchronizedList(arraylist)同步容器
Collections.synchronizedList(linkedList)同步容器
Collections.synchronizedList(ArrayDeque)同步容器

set
hashset 哈希表结构(数组和单向链表)
linkedhashset 哈希表结构外加双向链表(数组和单向链表双向链表(双向链表保持插入的顺序))
treeset 红黑树结构 可以排序
Collections.synchronizedSet(hashset)同步容器
Collections.synchronizedSet(linkedhashset)同步容器
Collections.synchronizedSortedSet(treeset)同步容器


map
hashmap哈希表结构(数组和单向链表)
treemap红黑树结构 可以排序
linkedhashmap哈希表结构外加双向链表(数组和单向链表和双向链表(双向链表保持插入的顺序))
hashtable哈希表结构(数组和单向链表)同步容器
WeakHashMap的键对象为弱引用
Collections.synchronizedMap(hashmap)同步容器
Collections.synchronizedMap(linkhashmap)同步容器
Collections.synchronizedMap(WeakHashMap)同步容器

Collections.synchronizedSortedMap(treemap)同步容器


同步容器一般是在方法上加锁,所以锁的this

List lista = Collections.synchronizedxxx(xxx)

这种同步容器锁的是lista;这种同步容器也可以指定锁,在静态方法中


同步容器是虽然是线程安全的,但是复合操作我们依然需要加锁

例如,1.缺少在加入 2.当我们迭代的时候,其他线程又修改了数据

同步容器可能会包的错误:1.数组越界,一个线程删除数组的某一个坐标,另外一个线程获取这个坐标,就会越界

2.一个线程在迭代的时候,假如计数器被另一个线程修改了,就会报错concurrentModifcationException错误 及时失败“fail-fast”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值