- 博客(8)
- 收藏
- 关注
原创 Future 框架基本原理及执行流程
文章目录前言一、Future基本应用及基本构造1.基本应用二、执行流程分析1.executorService.submit(new PrintTask("哈哈"))2.异步任务执行execute(ftask)3.FutureTask的run4.FutureTask的get总结前言本文基于个人理解对Future异步任务的执行流程及原理进行简单的总结。一、Future基本应用及基本构造FutureTask的基本UML图。1.基本应用public class TestFutrueTask {
2021-07-12 17:27:26 972
原创 基于ReentrantReadWriteLock的读写锁应用及简要原理分析
文章目录前言一、基本应用二、源码基本分析1.构造函数2.wl.lock()3.wl.unlock()4.rl.lock()4.rl.unlock()总结前言 在研发中经常会遇到数据一致性的问题,如使用redis缓存并使用mq等方式对缓存进行异步更新。当两个线程在同一个时间段分别进行读缓存和写缓存时便可能会出现缓存不一致的情况。如果要完全规避这种情况,那就必须采用加锁或其他方式进行处理。本文依据个人理解对ReentrantReadWriteLock进行简要的原理分析。一、基本应用 虽然此示例是
2021-07-01 16:01:30 171
原创 spring getBean及循环依赖基本流程分析
文章目录前言一、Bean的三级缓存及简单bean的实例化过程二、循环依赖前言 本文基于大佬 文章并结合个人理解进行了一个简单的流程整理,仅供参考,欢迎交流。一、Bean的三级缓存及简单bean的实例化过程 在bean的实例化过程中,spring使用了3个缓存,这3个缓存是互斥的,即其中一个存有bean的缓存则其他2两个便没有。具体定义如下:/** Cache of singleton objects: bean name to bean instance. */ private final
2021-03-09 20:53:33 227
原创 ThreadPoolExecutor简单原理流程
文章目录前言一、原理流程前言本文基于大佬的文章按照自己的理解画了一个流程图用于辅助理解。一、原理流程woker的存活就是用getTask()的轮训获取任务队列里面的逻辑来控制的。简单的理解就是,如果核心线程数范围内的线程在allowCoreThreadTimeOut=false的情况下会一直轮训获取任务队列里面的任务并执行不会销毁。而核心线程数到最大线程数的范围内的线程会在keepAliveTime内获取任务,如果不能获取到任务则会进入销毁流程。...
2021-03-03 16:40:17 156 1
原创 ThreadLocal基本源码分析
文章目录前言一、ThreadLocal基本源码分析二、理解总结前言系统中的登录上下文使用了ThreadLocal来记录每个请求里面用户的基本信息。用户的登录校验是通过拦截器解析请求中的cookie做相关校验。当校验通过后,loginContext中将存储用户基本信息供后续接口调用使用。在项目开发中,由于缺乏对ThreadLocal的深刻认识导致出现过一次惊魂的线上bug。一、ThreadLocal基本源码分析1、首先是创建一个ThreadLocal的holder变量,holder=new Thre
2021-03-02 16:37:16 184
原创 spring源码学习-BeanDefinition的创建和注册
BeanDefinition的创建和注册前言一、开门见山1、Debug 入口,窥探spring的内部运行流程前言纯属个人学习总结,仅供参考,欢迎交流。一、开门见山1、Debug 入口,窥探spring的内部运行流程public static void main(String[] args) { String path="/.../spring-config.xml"; ApplicationContext applicationContext = new FileSystemXmlAp
2021-02-22 10:18:07 929
原创 基于枚举的单例模式及Enum原理
基于枚举的单例模式及Enum原理基本概述双检测同步单例模式基于枚举的单例模式枚举代替类实现单例模式基本概述项目中经常用到基于双检测的同步单例模式,但是这种模式存在被反射和序列化攻破的缺点。在effective java 中提到了使用基于枚举的单例模式,这种单例模式能有效规避上述缺点。基于个人学习理解进行如下总结。双检测同步单例模式public class DoubleCheckSingleBean { private String name; // volatile修饰 保证线程同步
2021-02-19 14:19:19 274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人