• 【并发编程】【JDK源码】JDK的(J.U.C)java.util.concurrent包结构


    本文从JDK源码包中截取出concurrent包的所有类,对该包整体结构进行一个概述。
    JDK1.5之前,Java中要进行并发编程时,通常需要由程序员独立完成代码实现。当然也有一些开源的框架提供了这些功能,但是这些框架依然没有JDK自带的功能使用起来方便。

    而当针对高质量Java多线程并发程序设计时,比如使用Java之前的wait()notify()synchronized等,需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素,往往会采用一些较为复杂的安全策略,加重了程序员的开发负担。

    万幸的是,在JDK1.5出现之后,Sun大神(Doug Lea)推出了java.util.concurrent工具包以简化并发完成。开发者们借助于此,将有效的减少竞争条件(race conditions)和死锁线程。concurrent包很好的解决了这些问题,为我们提供了更实用的并发程序模型。

    JDKjava.util.concurrent包,包含两个子包atomiclocks

    java.util.concurrent.atomic

    atomic包含原子类。

    java.util.concurrent.locks

    locks包包含锁相关的类,如lock、condition等

    java.util.concurrent

    concurrent包下包含一些并发工具类,如Executors、Semaphore、CountDownLatch、CyclicBarrier、BlockingQueue等。

    J.U.C的五大核心

    上面是JDK源码中的concurrent包的结构,下面根据使用场景对J.U.C进行了分类。J.U.C核心由5大块组成:atomic包、locks包、collections包、tools包(AQS)、executor包(线程池)。
    注意,此处的包是按使用逻辑分类的,不是实际的代码结构。

    参考资料:
    java的concurrent用法详解
    java.util.concurrent包源码分析
    阅读jdk源码
    面试中并发类问题的准备和学习

  • 相关阅读:
    §6 矢量在轴上的投影(射影)
    3§5 点与直线的位置关系
    第十八章 机械振动基础
    第五章摩擦平衡问题
    矩阵论基础 3.4线性方程组的解
    第三章 平面与空间直线
    第九章点的复合运动
    §3 两平面的相关位置
    3§7 直线与平面的位置关系
    第十七章 碰撞
  • 原文地址:https://www.cnblogs.com/z00377750/p/9211255.html
Copyright © 2020-2023  润新知