JUC源码学习
文章平均质量分 91
自己的学习计划是按照狂神老师的课学习一下简单的使用,之后会去看视频和阅读别人的博客去学习源码。
嘿,鱼骨头^O^
这个作者很懒,什么都没留下…
展开
-
ThreadLocal源码解析
目录1. 简介2. 基本使用3. ThreadLocal原理说明4. ThreadLocal源码解析4.1 成员变量4.2 构造方法4.3 成员方法4.3.1 get()及相关的方法4.3.2 set(T value)4.3.3 remove()方法5. ThreadLocalMap源码解析5.1 成员变量5.2 内部类5.3 构造方法5.4 成员方法5.4.1 nextIndex(int i, int len)5.4.2 prevIndex(int i, int len)5.4.3 getEntry(Th原创 2022-01-23 11:22:58 · 1676 阅读 · 0 评论 -
ConcurrentHashMap源码解析(下)
6. 成员方法6.1 一些辅助方法spread(int h)方法这个方法是计算Node结点的hash值的,在计算哈希值时将h的高位也用到,是为了使散列表更加分散。// 0x7fffffff转化为2进制就是1111111111111111111111111111111// HASH_BITS的值就是1111111111111111111111111111111// 这里用h^(h>>>16)是为了在计算哈希值时将h的高位也用到,使散列表更加分散static final int原创 2022-01-22 11:47:36 · 1009 阅读 · 1 评论 -
ConcurrentHashMap源码解析(上)
目录1. 前言2. 简介3. 成员变量4. 构造方法5. 内部类1. 前言HashMap不是线程安全的,在处理并发的时候可能会出现问题。而HashTable虽然是线程安全的,但是却是需要所有操作竞争同一把锁,效率自然会下降很多。而如果容器中有多把锁,每一把锁锁一段数据,这样在多线程访问不同段的数据时,就不会出现锁竞争了,进而可以有效提高并发效率。这就是ConcurrentHashMap采用的分段锁思想。2. 简介ConcurrentHashMap是HashMap的线程安全版本,内部也是采用数组+链表原创 2022-01-21 21:15:49 · 809 阅读 · 0 评论 -
FutureTask源码解析
目录1. 前言2. FutureTask继承体系3. 源码分析3.1 成员变量3.2 构造方法3.3. 成员方法3.3.1 run()方法及与其相关的方法3.3.2 get()方法及与其相关的方法3.3.3 cancel(boolean mayInterruptIfRunning)方法4. 总结1. 前言在创建线程的方式中,我们可以直接继承Thread和实现Callable接口来创建线程,但是这两种创建线程的方式不能返回执行的结果。于是从JDK1.5开始提供了Callable接口和Future接口,这两原创 2022-01-19 19:38:06 · 1368 阅读 · 0 评论 -
Semaphore源码解析
目录1. 简介2. 小例子3. 源码解析3.1 内部类3.1.1 Sync3.1.2 NonfairSync3.1.3 FairSync3.2 成员变量3.3. 构造方法3.4 成员方法3.4.1 获取资源相关的成员方法3.4.1.1 acquire()方法3.4.1.2 acquireSharedInterruptibly(int arg)方法3.4.1.3 tryAcquireShared(int acquires)方法3.4.1.4 doAcquireSharedInterruptibly(int a原创 2022-01-18 11:24:00 · 591 阅读 · 0 评论 -
CyclicBarrier源码解析
目录1. 简介2. 简单使用3. 源码解析3.1 成员变量3.2 构造方法3.3 成员方法3.3.1 await方法3.3.2 dowait方法3.3.3 breakBarrier方法3.3.4 nextGeneration方法4. 总结1. 简介CyclicBarrier的字面意思是可循环使用的屏障,与CountDownLatch最明显的区别是CyclicBarrier是可循环的屏障,而CountDownLatch是只能使用一次的屏障。CyclicBarrier,回环栅栏,只有当一定数量的线程都到达才原创 2022-01-17 10:44:40 · 2790 阅读 · 0 评论 -
CountDownLatch解析
目录1. 简介2. 简单的使用3. CountDownLatch解析3.1 结构3.2 源码解析3.2.1 await()方法3.2.2 countDown()方法4. 总结1. 简介CountDownLatch是一个简单的同步器,可以允许一个或多个线程等待其他的线程执行完毕后再执行后续的操作。CountDownLatch其实和Thread.join()有点类似,等待其他线程执行完后再执行任务。# CountDownLatch用法简介CountDownLatch相当于一个计数器,初始化的时候赋予计原创 2022-01-15 18:27:50 · 315 阅读 · 0 评论 -
JUC之AQS学习
源码前言内部类Node属性成员方法lock操作acquire方法tryAcquire方法addWaiterenq方法acquireQueuedshouldParkAfterFailedAcquireparkAndCheckInterrupt方法unlock()操作releasetryReleaseunparkSuccessorlockInterruptibly方法acquireInterruptiblydoAcquireInterruptiblycancelAcquire总结前言AbstractQueu原创 2022-01-14 20:46:00 · 258 阅读 · 0 评论 -
JUC之Reentrantlock源码解析
前言Reentrantlock是可重入的互斥锁,具有与Synchronized相同的功能,但是却比Synchronized更加灵活。Reentrantlock底层基于AbstractQueuedSynchronized实现,AbstractQueuedSynchronized抽象类定义了一套多线程访问共享资源的同步模板,解决了实现同步器时涉及的大量细节问题,只有少量细节需要自己设定。(AbstractQueuedSynchronized为加锁和解锁过程提供了同步的模板方法)。Reentrantlock原创 2022-01-13 11:02:52 · 376 阅读 · 4 评论 -
LongAdder源码解析
目录1. AtomicLong2. AtomicLong和LongAdder的比较3. LongAdder3.1 LongAdder原理分析3.2 LongAdder源码分析4. 总结1. AtomicLongAtomicLong是JUC包下的原子类,在并发情况下进行计数操作时使用AtomicLong可以保证数据的准确性。下面是AtomicLong类的加1和减1操作的源码//AtomicLong类的加1和减1操作public final long incrementAndGet() { r原创 2022-01-11 21:57:29 · 642 阅读 · 0 评论 -
java并发基石之CAS原理及ABA问题分析
目录1.以一个小案例引出CAS2. CAS实现原理2.1 怎么使用JDK支持的CAS操作2.2 CAS实现的原理3. ABA问题学习于:b站小刘老师讲源码1.以一个小案例引出CAS主要内容:1. 从网站计数器实现中一步步引出CAS操作2. 介绍JAVA中的CAS及CAS可能存在的问题先实现一个小demo,了解一下什么是CAS。需求:我们开发一个网站,需要对访问量进行统计,用户每发送一次请求,访问量+1,如何实现?我们模拟有100个人同时访问,并且每个人对网站发送10次请求,最后总访问次数原创 2022-01-09 20:20:26 · 451 阅读 · 0 评论 -
JUC基础学习(下)
目录11. 线程池(重点)12. 四大函数式接口13. Stream流计算14. ForkJoin15. 异步回调16. JMM17. Volatile18. 单例模式19. 深入理解CAS20. 原子引用21. 锁11. 线程池(重点)线程池:3大方法、7大参数、4种拒绝策略池化技术程序的运行,本质:占用系统的资源! (优化资源的使用=>池化技术)线程池、连接池、内存池、对象池······创建、销毁。十分浪费资源。池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。原创 2022-01-08 20:01:13 · 558 阅读 · 0 评论 -
JUC基础学习(上)
目录1. 什么是JUC2. 线程和进程3. Synchronized锁4. Lock锁5. 生产者和消费者问题6. 8锁现象7. 集合类不安全8. Callable9. 常用的辅助类9.1 CountDownLatch9.2 CyclicBarrier9.3 Semaphore10. ReadWriteLock读写锁11. BlockingQueue1. 什么是JUCJUC就是java.util.concurrent工具包的简称。这是一个处理线程的工具包,JDK1.5之后出现。我们平常在使用线程时一般原创 2022-01-05 21:17:57 · 318 阅读 · 0 评论