
J.U.C
文章平均质量分 51
L._l
这个作者很懒,什么都没留下…
展开
-
[JDK源码]-J.U.C-ConcurrentSkipListMap
由于作者水平有限,如有什么错误点,多谢指出。 ConcurrentSkipListMap/*头节点 索引节点(最底层保存的是 数据节点 其他层保存的是 索引节点)* +-+ right +-+ +-+* |2|---------------->| |--------------------->| |->null* +-+ +-+原创 2021-12-27 09:29:23 · 1056 阅读 · 15 评论 -
[JDK源码]-J.U.C-ConcurrentHashMap
由于作者水平有限,如有什么错误点,多谢指出。 ConcurrentHashMappublic class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { //保存K-V 节点 static class Node<K,V> implements Map.Entry<K,V> {原创 2021-12-24 20:34:15 · 1724 阅读 · 21 评论 -
[JDK源码]-J.U.C-ScheduledThreadPoolExecutor
以下是在学习中整理的一些内容,如有错误点,多谢指出。 ScheduledExecutorService可以用来在给定延时后执行异步任务或者周期性执行任务,由于放入的任务不一定能够立即执行,所以还是需要得放入队列,然后获取,看看是否满足执行条件:时间是否满足。ScheduledExecutorService接口public interface ScheduledExecutorService extends ExecutorService { //在延迟delay时间后执行command。unit为原创 2021-12-16 14:15:32 · 1559 阅读 · 21 评论 -
[JDK源码]-J.U.C-ThreadPoolExecutor
以下是在学习中整理的一些内容,如有错误点,多谢指出。 ThreadPoolExecutor线程池。ExecutorExcutor 是线程池的顶层接口。 定义了一个执行方法public interface Executor { void execute(Runnable command);}传入一个Runnable对象,然后任务即可被执行。 抽象了一个Runnable 任务如何执行。ExecutorServiceExcutorService 次级接口 在ExcutorService原创 2021-12-14 14:48:38 · 1397 阅读 · 22 评论 -
[JDK源码]J.U.C-AQS.ConditionObject
ConditionObject内部类条件变量 ConditionObject 实现了 Condition 接口变量构造器定义public class ConditionObject implements Condition, java.io.Serializable { //第一个等待节点 private transient Node firstWaiter; //最后一个等待节点 private transient Node lastWaiter; // 重复原创 2021-12-06 14:07:18 · 1052 阅读 · 26 评论 -
[JDK源码]J.U.C-AbstractQueuedSynchronizer
AQS(一)简单介绍原理:AQS用于实现线程间的同步操作。它通过一个FIFO队列作为线程等待队列,一个volative 的state变量来作为同步状态,并且提供了大量的模板方法,子类可以通过实现这些方法来完成线程同步。AQS核心变量public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { static final原创 2021-12-05 09:37:13 · 1854 阅读 · 21 评论 -
[JDK源码]J.U.C-CyclicBarrier
CyclicBarrier原理CyclicBarrier :屏障 需要等到所有的线程必须都到达之后,才能继续执行。就是 parties 变量 如果是5 的话 就相当于 来人拦住他 够5个了 放行。屏障的每次使用都表示为一个生成实例。 每当屏障被触发或重置时,生成就会改变。 由于锁的不确定性方式,可能有许多代与使用该障碍的线程相关联 可以分配给等待的线程——但是在同一时间只有一个线程是活动的({@code count}应用的线程),其余的线程要么被破坏要么被触发。 如果有断点但没有后续重置原创 2021-12-03 16:26:10 · 1015 阅读 · 21 评论 -
[JDK源码]J.U.C-AQS-CountDownLatch和Semaphore
CountDownLatch和Semaphore原创 2021-12-01 17:24:43 · 1097 阅读 · 17 评论 -
[JDK源码]J.U.C-AQS-ReentrantReadWriteLock
ReentrantReadWriteLock读锁:就是用于读互斥区中保护的变量写锁:就是用于写互斥区中保护的变量读操作 是不需要上锁的,写需要上锁适用于读多写少的场景,读锁可以并发,写锁与其他锁互斥。主要属性和构造器public class ReentrantReadWriteLock implements ReadWriteLock { // 读锁对象 private final ReentrantReadWriteLock.ReadLock readerLock; /原创 2021-11-30 16:57:40 · 1010 阅读 · 18 评论 -
[JDK源码]J.U.C-AQS-ReentrantLock
AQS原理介绍:AQS (AbstractQueuedSynchronizer)底层一个队列 阻塞队列 -> Abstract:因为它并不知道怎么上锁。模板方法设计模式即可,暴露出锁逻辑。 Queue :线程阻塞队列 Synchronizer:同步 CAS + state 完成多线程枪锁逻辑 Queue 完成抢不到锁的线程排队AQS核心代码//获取锁public final void acquire(int arg) { if (!tryAcquire(a原创 2021-11-28 17:51:39 · 920 阅读 · 14 评论