码迷,mamicode.com
首页 > 其他好文 > 详细

jdk5的并发库

时间:2015-03-30 19:14:55      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

 一、传统集合
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)
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
适合于:定时或者延迟的任务,在异步操作中需要 超时回调的场景

jdk5的并发库

标签:

原文地址:http://my.oschina.net/u/2322635/blog/393706

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!