jdk5的并发库
来源: 阅读:546 次 日期:2015-04-01 11:02:46
温馨提示: 小编为您整理了“jdk5的并发库”,方便广大网友查阅!

一、传统集合

collection:

list:ArrayList LinkedList Vector Stack

set:HashSet TreeSet

Map:HashMap TreeMap

二、简单的不再多说,只说不会的!

1、Vector: 默认创建大小为10的Object数组(所以是基于数组实现的) add, remove方法都是添加了 synchronized关键字的 所以线程安全

vector 扩大数组 是扩大两倍 线程安全

ArrayList 扩大 *1.5+1 线程不安全

2、Stack : 先进后出

继承于Vector,所以也是线程安全的!

push pop peek

3

HashSet 基于HashMap实现,使用的是hashMap中的Key, 无容量限制 ,非线程安全

TreeSet 基于TreeMap实现, 支持排序 ,非线程安全

4

HashMap 基于Entry数组实现, key,value 后出entry, 无容量限制,非线程安全

TreeMap 基于 红黑树实现,无容量限制,非线程安全

三、各种实现方式

ArraylIst 数组

linkedList 双向 链表

Vector 数组

Stack 数组

HashSet 基于HashMap实现

TreeSet 基于TreeMap 实现

HashMap 基于Entry对象的数组实现

TreeMap 基于 红黑树实现

四、传统集合的一些性能

1、set 和 map 类型的查找是通过hash后,再到链表上查找,所以速度相对来说要快!

2、当数量超过万级别:

插入:arrayList Vector的影响比较大,其他基本没什么变化

查找和删除;list 的性能下降比较严重,set和map基本不受影响

五、并发集合

以下都是线程安全的:

ConcurrentHashMap 在每一个分段上都用锁进行保护,从而让锁的粒度更精细一些,并发性能更好,而HashMap没有锁机制,不是线程安全的。

CopyOnWriteArrayList 在读写操作无锁的 ArrayList

CosyOnWriteArraySet 基于CopyOnWriteArrayList实现

ArrayBlockingQueue 基于数组,先进先出,阻塞读写

ArrayBlockingQueue(int capacity)创建一个带有给定的(固定)容量和默认访问策略的 ArrayBlockingQueue。同时初始化锁和两个锁上的condition,一个为notEmpty 一个为notFull

六、原子操作

AtomicInteger AtomicLong AtomicBoolean

七、Executors

newCachedThreadPool()

创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。

newFixedThreadPool(int nThreads)

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。

newSingleThreadExecutor()

创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。

newScheduledThreadPool(int corePoolSize)

创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。

适合于:定时或者延迟的任务,在异步操作中需要 超时回调的场景

更多信息请查看IT技术专栏

更多信息请查看 脚本栏目
手机网站地址: jdk5的并发库
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 加入群交流| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map