JUC相关问题(1)

  1. 线程安全集合类可以分为三大类:

    • 遗留的线程安全集合如 Hashtable , Vector

    • 使用 Collections 装饰的线程安全集合,如:

      • Collections.synchronizedCollection

      • Collections.synchronizedList

      • Collections.synchronizedMap

      • Collections.synchronizedSet

      • Collections.synchronizedNavigableMap

      • Collections.synchronizedNavigableSet

      • Collections.synchronizedSortedMap

      • Collections.synchronizedSortedSet

    • java.util.concurrent.*

  2. 从Java5开始,Java在java.util.concurrent包下提供了大量支持高效并发访问的集合类,它们既能包装良好的访问性能,有能包装线程安全。这些集合类可以分为两部分,它们的特征如下:

    • 以Concurrent开头的集合类:(底层是cas (cas底层使用的是Unsafe类,ConcurrentLinkedDeque底层就用了cas)+ sychronized)

      以Concurrent开头的集合类代表了支持并发访问的集合,它们可以支持多个线程并发写入访问,这些写入线程的所有操作都是线程安全的,但读取操作不必锁定。以Concurrent开头的集合类采用了更复杂的算法来保证永远不会锁住整个集合,因此在并发写入时有较好的性能。

    • 以CopyOnWrite开头的集合类:(底层是ReentrantLock)

      以CopyOnWrite开头的集合类采用复制底层数组的方式来实现写操作(写入时拷贝)。当线程对此类集合执行读取操作时,线程将会直接读取集合本身,无须加锁与阻塞。当线程对此类集合执行写入操作时,集合会在底层复制一份新的数组,接下来对新的数组执行写入操作。由于对集合的写入操作都是对数组的副本执行操作,因此它是线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值