![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
斜月&三星
这个作者很懒,什么都没留下…
展开
-
synchronized 和 ReentrantLock 源码解析
1. synchronized 和 ReentrantLock 是如何实现的,它们之间的区别synchronized 属于独占式悲观锁,是通过 JVM 隐式实现的,synchronized 只允许同一时刻只有一个线程操作资源。在 Java 中每个对象都隐式包含一个 monitor(监视器)对象,加锁的过程其实就是竞争 monitor 的过程,当线程进入字节码 monitorenter 指令之后...原创 2020-05-03 20:52:39 · 207 阅读 · 0 评论 -
ThreadPoolExecutor 的参数含义及源码解析
1. 线程池线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。若要使用线程池一定离不开ThreadPoolExecutor ,在阿里巴巴的《Java 开发手册》中是这样规定线程池的:线程池不允许使用 Executors 去创建,而是通过 Thread...原创 2020-05-02 21:46:40 · 812 阅读 · 0 评论 -
线程的状态、工作原理和常见面试题
1. 线程的状态线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态:NEW,新建状态,线程被创建出来,但尚未启动时的线程状态;RUNNABLE,就绪状态,表示可以运行的线程状态,它可能正在运行,或者是在排队等待操作系统给它分配 CPU 资源;BLOCKED,阻塞等待锁的线程状态,表示处于阻塞状态的线程正在等待监视器锁,比如等待执行 ...原创 2020-05-01 23:19:50 · 316 阅读 · 0 评论 -
HashMap 源码分析及 JDK8 的优化
1. 底层数据结构在JDK1.7中HashMap是以数组加链表的形式组成的,JDK1.8之后新增了红黑树的组成结构,当链表大于8并且容量大于64时,链表结构会转换成红黑树结构,它的组成结构如下图所示:数组中的元素我们称之为哈希桶,它的源码如下:static class Node<K,V> implements Map.Entry<K,V> { fin...原创 2020-04-12 15:39:59 · 130 阅读 · 0 评论 -
String源码解析及常见面试题
一、String 源码解析1. 数据结构以主流的 JDK 版本 1.8 来说,String 内部实际存储结构为 char 数组,源码如下:public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[];...原创 2020-04-11 22:47:58 · 309 阅读 · 0 评论