JAVA基础之——JDK包分析concurrent

concurrent在哪儿:jdk\jre\lib\rt.jar

package java.util.concurrent;

本文从特性、分类、扩展方面一一道来。

1 特性

  包中包含大量有用的构建块,线程安全集合、线程池、信号和同步工具。可以用来改进并发的性能,使用这些后可以减少代码中的同步等。

2 分类

2.1 Atomic包

  包下实现了原子操作,移步原子操作

  原子操作核心思想是CAS(compare and swap)比较并操作,然后调用底层操作系统指令来完成。

  原子操作有对基本数据类型boolean、Integer、Long操作,对数组操作,对对象引用操作,对volatile字段原子操作。

2.2 Lock包

  公平锁

  非公平锁

 

2.3 其他

  BlockingQueue阻塞队列。

  CancellationException

  ConcurrentHashMap

  CopyOnWriteArrayList和CopyOnWriteArraySet绝对线程安全:写时复制容器,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是将当前容器复制一个新容器,在新容器添加元素,添加完成后,再将引用指向新容器。

  CountDownLatch一个同步辅助类,调用await方法时,任何线程都被阻塞,直到锁计数减少为0,然后在该点等待的所有线程才被释放。

  应用场景:替代synchronized或同时处理一类操作

  CyclicBarrier一个同步辅助类,容许一组线程相互等待,直到这组线程达到某个公共的屏障点。

  Executor框架,用于管理实现Runnable的任务执行的整个框架。

  TimeUnit,其内部的sleep用Thread.sleep实现,可以设置时间单位,可用性更好些。

 


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

 

posted @ 2018-11-12 09:28  sun-sailing  阅读(359)  评论(0)    收藏  举报