首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JDK源码系列
zhen_hong
创建于2022-10-09
订阅专栏
JDK源码
暂无订阅
共19篇文章
创建于2022-10-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
1、ConcurrentHashMap
1.1.private static final float LOAD_FACTOR = 0.static final int NCPU = Runtime.getRuntime().1.//为什么扩容1.5倍,实际上我们的元素个数达到容量的0.//直接扩容了1.this.为什么...
2、TreeMap
2.2.1.。。。。。。cmp = cpr.compare(key, t.t = t.t = t.return t.cmp = k.compareTo(t.t = t.t = t.return t.parent.parent.为什么插入新的节点要直接插入红色节点呢?假设我们插入黑...
3、HashMap
1.HashMap是使用数组+链表+红黑树的方式构成的,它与ConcurrentHashMap的主要区别就是一个是线程不安全,一个是线程安全,在代码上可能会有些差别,但是在计算容量,定位 索引等原理上是基本差不多的,想要更多的了解ConcurrentHashMap,请转移到Con...
4、ArrayList
this.this.this.elementData = c.if ((size = elementData.// c.if (elementData.getClass() != Object[].elementData = Arrays.copyOf(elementData, ...
5、JDK并发锁之AQS与独占锁
1.* @since 1.implements java.io.这个类主要就是定义了当前锁的所属关系,将竞争到锁的线程进行所属关系的关联,表示当前这把锁被某个线程占用了,通常用于锁重入判断。1.this.this.this.this.1.1.2.if (Thread.。。。。。。...
6、JDK并发锁之读写锁
前一节我们分析了AQS并发框架和独占锁以及condition的实现,为我们继续往下分析并发包中其他的类打下了基础,现在我们趁热打铁,分析一下读写锁。2.2.3.public final void java.util.concurrent.locks.protected f...
7、Semaphore
2.final int java.util.concurrent.Semaphore.protected int java.util.concurrent.Semaphore.当我们创建信号量的时候会设置一定数量的许可,线程获取到一个许可便会将许可总数减去1,然后返回剩余的许可数...
8、CyclicBarrier
1.private final Condition trip = lock.1.this.this.this.private int java.util.concurrent.final ReentrantLock lock = this.lock.if (g.if (Threa...
9、CountDownLatch
this.public void java.util.concurrent.sync.if (Thread.protected int java.util.concurrent.CountDownLatch.public void java.util.concurrent.syn...
10、SynchronousQueue
SynchronousQueue从字面意思上来将就是一个同步队列,啥是同步队列?你只要往同步队里中添加元素,你的线程就会被阻塞,直到另外一个线程去获取对应的元素并唤醒这个 线程。static final int NCPUS = Runtime.getRuntime().1.1.1...
11、ThreadPoolExecutor
1.1.1.1.1.以下对于方法的描述全是基于ThreadPoolExecutor的实现说明的,因为不同的实现可能产生不同的说法,但是实现的效果肯定是要符合接口定义的。//被中断的线程如果没有将中断标志位清除,那么它就不会再阻塞。if (UNSAFE.UNSAFE.其实不难发现,...
12、PriorityQueue
1.1.private static final int MAX_ARRAY_SIZE = Integer.1.// but continues for 1.this.this.1.//如果原始长度大于64,那么按照1.if (i >= queue.if (key.首先我们先来证...
15、ForkJoinPool之基础篇
1.1.1.1.1.1.1.Doug Lea论文英文版:http://gee.cs.oswego.edu/dl/papers/fj.pdfDoug Lea论文中文版:http://ifeve.1.1.2.1.2.以下对于方法的描述全是基于ForkJoinPool的实现说明。1.2...
13、DelayQueue
private final Condition available = lock.final ReentrantLock lock = this.lock.q.if (q.available.lock.final ReentrantLock lock = this.lock.E ...
16、ForkJoinPool之外部任务的提交与创建工作线程
在第15节中我们讲解了ForkJoinPool的实现原理和与之相关的类,为我们学习ForkJoinPool 的实现打下了基础。2.// Masks and units for WorkQueue.//负数,用于WorkQueue.//版本计数,用于WorkQueue.// Mod...
14、ScheduledThreadPoolExecutor
2.2.1.2.1.可以看到这个ScheduledFutureTask继承了FutureTask,FutureTask的相关内容可以移步到第11节ThreadPoolExecutor中学习。//为负数时,period = 下次执行时间点 - 上次任务执行完毕时重新计算时间点的当前...
17、ForkJoinPool之工作线程的启动与任务的fork以及join
1.if (workQueue.pool.pool.w.int seed = w.w.1.if ((ws = workQueues) != null && (m = ws.int ss = w.if ((n = (b = q.base) - q.(a = q.long i = (...
18、Phaser
1.private static final int MAX_PHASE = Integer.1.this.final Phaser root = parent.this.this.evenQ = root.this.oddQ = root.phase = parent.this...
19、ThreadLocal
ThreadLocal可用于解决多线程并发的问题,其原理是每个线程都有一个代表其自身的Thread对象,每个Thread对象内部都有一个ThreadLocalMap字段,这个ThreadLocalMap是用于保存 数据的容器。另一方面ThreadLocal也可以解决跨层跨方法传通...