- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 线程池ThreadPoolExecutor核心方法execute()原理源码分析
线程池ThreadPoolExecutor核心方法execute()原理源码分析首先了解个基本知识:线程只能启动一次,重复启动会报异常,下面会用到这个知识点注:为了显示行号,所以一下源码均以图片展示1. 构造方法首先解释一下各个参数:①corePoolSize:核心线程数②maximumPoolSize:最大线程数(最大线程数只限制了下限,没有限制上限,但是上限也有限制并不能达到Integer.MAX_VALUE,下文分析),通过该下限限制可以发现最大线程最少有1个③keepAliveTi
2021-01-22 14:13:57
1443
原创 ReentrantLock可重入锁源码原理详解
ReentrantLock可重入锁源码原理详解背景介绍 AbstractQueuedSynchronizer是Doug Lea在JDK1.5的时候加入的一个同步框架,也被简称为AQS,该框架主要维护了被竞争资源的状态,和获取到资源的线程(通过AbstractOwnableSynchronizer来维护)以及未获取到资源的线程的管理,AQS主要通过volatile的内存可见性和CAS来实现。具体的竞争资源的方式(公平、非公平)由子类实现,Doug Lea在引入该框架时提供了一系列已经实现好的子类,比如:
2020-09-19 19:29:53
909
2
原创 BIO与NIO以及零拷贝(zero copy)
本篇博客主要讲述BIO、NIO的网络模型以及零拷贝BIO(Blocking IO)阻塞式IOBIO网络模型代码server端:public class BIOServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket=new Serv...
2020-04-15 18:59:31
726
原创 Nginx从安装到使用反向代理、负载均衡、动静分离
Nginx从安装到使用反向代理、负载均衡、动静分离安装Nginx反向代理功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入...
2020-04-14 19:48:13
308
原创 JDK1.8---HashMap的resize()扩容方法源码详解
JDK1.8---HashMap的resize()扩容方法源码详解resize()方法触发时机下面开始根据源码介绍HashMap的扩容原理下面进行分步分析扩容resize()方法触发时机首先总结一下JDK1.8的HashMap都在什么时候触发resize()方法,根据阅读源码总结了三个时机触发扩容,这里只做介绍,后面根据源码详细分析HashMap是由数组+链表+红黑树构成的,数组就称之为桶了...
2019-08-17 11:21:06
4122
5
原创 JDK1.8---HashMap的get(Object)方法源码详解
JDK1.8---HashMap的get(Object)方法源码详解HashMap是我们常用的集合之一,本片针对HashMap中的get()方法底层源码讲解。之后还会有对HashMap的put、remove、还有扩容方法resize以及链表扭转为红黑树进行分析下面针对HashMap从get()方法开始以及涉及到的调用方法讲解:先看一下get()方法源码:public V get(Obje...
2019-08-13 11:41:23
516
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人