
【曳凡】- JDK技术栈
文章平均质量分 85
探索jdk源码结构
曳凡
这个作者很懒,什么都没留下…
展开
-
从 ThreadLocal 到 TransmittableThreadLocal 的深度剖析
引言 ThreadLocal 相信大家都用过,我们在需要变量只生效于线程单位时,使用 TheadLocal 能很好的帮我们把变量在不同线程中隔离开来。本篇文章主要分析一下 ThreadLocal, InheritableThreadLocal, TransmittableThreadLocal。这三者是依次推进的关系, InheritableThreadLocal对ThreadLocal做了拓展,TransmittableThreadLocal对InheritableThreadLocal做了拓展。那接下原创 2022-03-28 10:56:29 · 1339 阅读 · 0 评论 -
Java8 Stream 的深度理解
前言 在java8中,stream流式处理极大的简化了我们的功能代码,其中用来筛选数据的filter也是我们用的非常多的,本篇文章用来记录stream运用时的思考,会不断更新,但是这篇文章不是讲解stream是如何使用的,如果想要学习stream的同学,可以戳这里 简化stream执行语句 平时大家在写流式数据处理来筛选数据时一般都会这样写 list.stream().filter(a-> {具体筛选条件}).collect(Collectors.toList()); 这样的写法非常好理解,但是会存原创 2021-11-12 19:02:06 · 501 阅读 · 1 评论 -
jdk1.7开始try-catch可以自动调用资源close
如果一个类实现了AutoCloseable接口,并行重写close方法。 那么这个类就可以写在try-catch的try后面的括号中,并且能在try-catch块执行后自动执行这个方法。 ...原创 2020-02-24 22:03:07 · 449 阅读 · 0 评论 -
jdk源码分析(4) ThreadLocal源码分析及应用场景
1、ThreadLocal介绍 性质 ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。具体实现就是在ThreadLocal中有一个关于线程的map表,这样不同的线程之间获取的数据是不相同的。 当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都可被回收。具体实现是依靠数据的弱引用实现的。 应用...原创 2020-04-24 16:20:53 · 167 阅读 · 0 评论 -
Current包(并发控制工具包)源码分析(2) ReentrantLock分析
1、ReentrantLock介绍 首先我们需要清楚ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。ReentrantLock相比较Synchronized主要多了三个功能 ReenTrantLock可以指定是公平锁还是非公平锁。而synchronized只能是非公平锁。所谓的公平锁就是先等待的线程先获得锁。 ReenTrantLoc...原创 2020-04-20 21:13:32 · 276 阅读 · 0 评论 -
Current包(并发控制工具包)源码分析(1) currentHashMap和hashMap
1.1、hashMap类介绍 Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。HashMap 是Map的一种实现,其底层是基于 数组 + 链表 组成的,在数据没有发生冲突之前放在一个数组中,如果某一个数据在hash后发生冲突,则将数据数组发生冲突的地方建立一个链表,将发生冲突的数据依次放入这个链表中。 1.2、hashMap源码分析 我们在初始化一个has...原创 2020-04-15 18:25:55 · 413 阅读 · 0 评论 -
jdk源码分析(3) 动态代理实现
文章目录1、动态代理介绍及示例2、Proxy类源码分析3、总结 1、动态代理介绍及示例 首先我们先来看个例子 public interface UserInterface { public void printUserInfo(); } 有一个实现了这个接口的实现类 public class UserImpl implements UserInterface{ @Overr...原创 2020-04-03 16:35:26 · 141 阅读 · 0 评论 -
jdk源码分析(2) java类加载及类生成机制
文章目录1、classLoader基础知识1.1、class文件介绍1.2、java的类加载器1.3、类加载器的工作方式1.4、两个类相同的判断方法1.5、jdk中Class类存在的意义2、Class类函数分析2.1、Class类的newInstance方法的优势2.3、Class相关函数源码分析2.4、如何对一个Class对象选择合适的构造器 1、classLoader基础知识 1.1、clas...原创 2020-04-02 21:53:51 · 406 阅读 · 0 评论 -
jdk源码分析(1) string,stringBuffer和stringbuilder的异同
文章目录1、String分析2、StringBuffer和Stringbuilder的区别3、StringBuffer和StringBuilder比较String的优势 1、String分析 首先是创建一个String,可以看到一般有两种方法,就是Sting a = “abc”。另一种是String b = new String(“b”) 直接赋值 jvm为了提升性能和减少内存开销,避免字符的重复...原创 2020-04-01 21:49:29 · 142 阅读 · 0 评论