手撕源码
文章平均质量分 68
平平无奇程序辕
平平无奇程序辕
展开
-
手撕源码系列之ThreadLock
ThreadLockThreadLock简介和作用应用场景源码底层结构ThreadLocalMap内部类get方法set方法问题ThreadLock简介和作用ThreadLock是Java.lang包下,JDK1.2提供的一个类。ThreadLocal的作用主要是做数据隔离。ThreadLocal内填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的。其实就是在多线程环境下,防止自己的变量被其它线程篡改。应用场景Spring实现事务隔离级别用的就是ThreadLock自己项目原创 2021-04-05 12:03:49 · 417 阅读 · 1 评论 -
手撕源码系列之AQS -- AbstractQueuedSychronizer
AQS -- AbstractQueuedSychronizer简介重点成员变量statehead 和 tailNode对象重点方法acquiretryAcquireacquireQueuedrelease 释放锁操作问题简介重点成员变量 /** * Head of the wait queue, lazily initialized. Except for * initialization, it is modified only via method setHead.原创 2021-04-03 22:28:55 · 127 阅读 · 2 评论 -
手撕源码系列之锁 -- ReentrantLock(二)(基于JDK1.8)
ReentrantLock简介成员变量三大核心内部类SyncNonfairSync疑问FairSyncReentrantLock构造方法其他主要方法lock 和 lockInterruptibly的区别简介ReentrantLock 翻译过来就是可重入锁。成员变量ReentrantLock只有一个成员变量,且用final修饰。意味着一旦初始化就不可修改引用了private final Sync sync;三大核心内部类SyncSync继承了AbstractQueuedSynchronize原创 2021-04-03 16:32:38 · 128 阅读 · 0 评论 -
手撕源码系列之锁 -- LOCK(一)(基于JDK1.8)
手撕源码系列之锁 -- LOCKLock源码:Condition对象LockLock 是JDK在1.5版本提供的Java.util.concurrent.locks包下的锁相关内容。功能是为了补充Sychronized缺乏的相关功能。关于Sychronized的优劣会在Sychronized内讲解(尚未提供)源码:public interface Lock { /**获取锁 ,如果当前锁被其他线程获取则等待直到获取锁*/ void lock(); /** 功能和loc原创 2021-04-03 14:23:44 · 192 阅读 · 0 评论 -
手撕源码系列之队列 -- Deque
Deque什么是DequeDeque方法什么是DequeDeque(Double Ended Queue)是一个双向队列,允许两头进出,即:既可以添加到队尾,也可以添加到队首,既可以从队首获取,又可以从队尾获取。Deque继承了QueueDeque方法 //插入头部,异常会报错 void addFirst(E e); //插入尾部,异常会报错 void addLast(E e); //插入头部,异常返回false boolean offer原创 2021-03-10 17:02:19 · 86 阅读 · 0 评论 -
手撕源码系列之队列 -- Queue
Queue什么是QueueQueue方法什么是QueueQueue(队列)是数据结构中比较重要的一种类型(是一种数据结构),它支持 FIFO (first in first out),跟我们生活中的排队类似。Queue方法 // 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 boolean add(E e); //添加一个元素并返回true 如果队列已满,则返回false boolean offer(E e); //移原创 2021-03-10 16:46:09 · 102 阅读 · 0 评论 -
手撕源码系列之线程池 -- ScheduledThreadPoolExecutor(二)
ScheduledThreadPoolExecutor的具体实现任务添加任务执行重复性任务的执行任务的取消任务添加ScheduledThreadPoolExecutor对任务的添加提供了大量的方法。重写ThreadPoolExecutor// 执行任务commandpublic void execute(Runnable command) { schedule(command, 0, TimeUnit.NANOSECONDS);}重写AbstractExecutorService/原创 2021-03-10 15:51:41 · 137 阅读 · 0 评论 -
手撕源码系列之线程池 -- ScheduledThreadPoolExecutor(一)
ScheduledThreadPoolExecutor构造方法简介:ScheduledThreadPoolExecutor用于执行周期性或延时性的定时任务,它继承了ThreadPoolExecutor,在原有基础上实现的任务调度线程池,内部使用延时工作队列DelayedWorkQueue实现对任务的延时调度。构造方法简介: ScheduledThreadPoolExecutor类继承的是ThreadPoolExecutor。而且它的构造方法都是super调用父类方法。由构造方法可以得知,Sche原创 2021-03-10 15:13:18 · 146 阅读 · 0 评论 -
手撕源码系列之线程池 -- ThreadPoolExecutor(二)
ThreadPoolExecutor(二)ThreadPoolExecutor实现流程ThreadPoolExecutor中实现的具体方法execute方法addWorker方法runWorkerThreadPoolExecutor实现流程ThreadPoolExecutor中实现的具体方法execute方法简介:execute方法是线程池添加任务的核心方法,由方法内判断是添加还是执行拒绝策略 //ThreadPoolExecutor的核心方法 public void execute(原创 2021-02-26 09:49:54 · 72 阅读 · 0 评论 -
手撕源码系列之线程池 -- ThreadPoolExecutor(一)
简介:ThreadPoolExecutor是线程池类,可以通俗的将它理解为存放一定数量线程的一个线程集合。线程池允许若个线程同时运行,同时运行的线程数量就是线程池的容量;当添加的到线程池中的线程超过它的容量时,会有一部分线程阻塞等待。线程池会通过相应的调度策略和拒绝策略,对添加到线程池中的线程进行管理。 ThreadPoolExecutor参数详解workersctl的作用和线程池状态详解构造方法核心参数QUEUE 缓存队列:RejectedExecutionHandler 拒绝策略ThreadF原创 2021-02-25 16:10:06 · 141 阅读 · 0 评论 -
手撕源码系列之线程池 -- 线程池基础
这里写自定义目录标题线程池基础Executor接口ExecutorServiceScheduledExecutorServiceAbstractExecutorService线程池基础Executor接口Executor接口作为java在1.5版本提供的线程池核心接口,他的只有一个方法execute(Runnable command)public interface Executor { /** * Executes the given command at some tim原创 2021-02-25 11:19:35 · 106 阅读 · 0 评论