如何学习JUC?

JUC

什么是JUC

juc是Java.util.concurrent包的简写,也叫Java的并发包。

很多培训机构并不会去教这个JUC包,一般讲多线程之前,基本上最多讲到一个线程池的创建和使用。

那么这个JUC包是何方神圣呢?

JUC包有哪些

目录结构:

  • java.util Java工具包
    • concurrent Java并发包
      • locks
      • atomic 原子类

其中我们的java.utils.concurrent下有我们的线程池,TimeUnit等。

java.utils.concurrent.locks下有我们的锁以及抽象队列同步器,AQS和ReentrantLock等

java.utils.concurrent.atomic下提供了一些支持原子操作的类,比如AtomicInteger

JUC的学习顺序

是不是有小伙伴听不懂上面分类呢,哈哈!JUC要学习的东西太多,一旦要讲就要讲个不同,因为学习过程中会有很多的知识点是有关系的,比如线程池涉及到AQS,CAS,ReentrantLock,synchronized。所以我们有一定的学习顺序。

  1. CAS:并发的最基本操作了,这个贯穿整个并发包,使用简单,原理复杂。

  2. synchronized:为什么要学习这个呢,我们的并发操作怎么可能少的了线程安全的保障呢,JUC中不是所有线程不安全的地方都是synchronized解决的,也有很多CAS操作

    1. 学习synchronized之前,你得对Java对象的对象头有一定的了解
    2. 同时你得知道一些基础的JVM指令,至少javap过几个简单的小demo
  3. AQS:抽象队列同步器,看上去名字比较离谱,其实就是一个存储Thread一个双向链表,用起来复杂,实现起来也是细节拉满。

  4. ReentrantLock:学习完AQS之后,你学习锁就简单多了。很快你就知道Lock的公平非公平,读写重入锁等各种概念了,(先学会怎么用,再去学习AQS,反过来再去理解Lock的原理)

  5. 至此你明白了Java锁的机制,接下来你可以学习线程池了!线程池使用起来比较简单,定制线程池的几个参数稍微用几次也能上手,但是底层用到了上述4点终点所有内容,如果你没有学过上述的内容,你就很难理解其源码了

  6. 明白了线程池,你反过来看concurrentHashMap的源码是不是轻松多了,轻松指的是至少可以看懂,源码阅读八可能轻松。

  7. 当你掌握以上内容,可以说JUC你是个行家了,接下来就是准备一些面试题方便加薪或者入职。有机会可以扒一扒Java的源码,读一读《深入了解Java虚拟机》对synchronized,voliate,native等更加深入的了解,来提升自己的水平。

学习链接提供

以哔哩哔哩的白嫖视频为主

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值