自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(3)
  • 收藏
  • 关注

原创 深入理解Java线程池及源码解析

为什么使用线程池   在Java虚拟机的线程模型中,Java线程(Thread)被一对一映射为操作系统内核线程。Java线程启动时会创建一个操作系统内核线程;当Java线程终止时,操作系统内核线程也会被回收,这些操作会耗费资源。所以频繁的创建启动、销毁线程,会耗费操作系统较多资源。开发过程中,合理地使用线程池有2个好处:   1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。   2.提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源, 还会降低系统的稳定性,使用

2021-11-30 21:43:53 401

原创 深入理解ThreadLocal及源码解析

ThreadLocal是什么   要理解ThreadLocal是什么,会涉及到3个类:Thread、ThreadLocalMap、ThreadLocal。在我们常用的线程Thread类中,有定义一个变量: ThreadLocal.ThreadLocalMap threadLocals = null;   ThreadLocalMap类是定义在ThreadLocal类中的内部类,我们通过操作ThreadLocal类中的set()、get()等方法,可以在线程生命周期内向这个map变量设置、获取值。 Thre

2021-11-25 19:06:20 210

原创 HashMap之环形链表源码图解

HashMap之环形链表源码图解1.扩容逻辑实现transfer()方法:2.扩容前的HashMap数据:3.线程一开始扩容,注意这句关键代码:4.巧了,此时线程二也开始触发扩容: Java7在多线程操作HashMap时,并发扩容可能会导致环形链表,get方法时则可能出现死循环。以下是环形链表的具体产生过程。 1.扩容逻辑实现transfer()方法: void transfer(Entry[] newTable, boolean rehash) { int newCapacity = newTab

2021-11-14 21:46:57 846

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除