Java
「已注销」
这个作者很懒,什么都没留下…
展开
-
面试官:可重入锁(ReentrantLock)是轻量级锁(lightweight/thin lock)吗?
引言我们都知道高效并发是从JDK5升级到JDK6后一项重要的改进型,HotSpot虚拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight/Thin Locking)、偏向锁(Biased Locking)等等,这些技术...原创 2020-04-06 23:50:36 · 4398 阅读 · 4 评论 -
Java GC机制小结之CMS触发条件
CMS GC是Mostly Concurrent收集器,全称为Concurrent Mark Sweep GC,是一种以获取最短停顿时间为目标的收集器。CMS的设计初衷和目的是为了消除Parallel GC和Serial Old GC在Full GC时长时间的停顿,从名字(Mark Sweep)上就可以看出,CMS GC是基于标记-清除算法实现,这也导致服务长时间运行会有严重的内存碎片化问题。另外...原创 2020-03-25 01:24:10 · 1875 阅读 · 0 评论 -
Java GC机制小结
毫无疑问,目前GC(垃圾回收)已经成为现代编程语言的标配。网上有关于各类JDK GC原理、优化的文章至少上万篇,但质量参差不齐,其中理解有误的文字以讹传讹,遍布各地。不仅仅是一些个人开发者的文章,甚至一些大厂的官方博客也有错误。本文只是在他们之中再增加一篇,仅供大家参考,欢迎批评指正。GC中的一些概念Java GC文章中常会见到一些和GC算法相关的概念,总结一些常见名词如下:mutator...原创 2020-03-18 16:02:34 · 340 阅读 · 0 评论 -
Java并发编程之AQS的理解
关于AQS的博客和文章网上已经有很多了,而且很多文章都写的不错。但是大多数文章都只是记录了针对Lock的情况下,AQS使用同步队列来存储等待的线程,却并没有指明AQS中还有针对condition的等待队列。同时也为了记录自己的想法,加深印象,因此还是决定写一篇博客。AQS全称AbstractQueuedSynchronizer,是Java中基于队列(FIFO,即First In First Ou...原创 2019-01-06 21:51:58 · 490 阅读 · 1 评论 -
LockSupport的一点理解
类LockSupport是用于创建锁和其他同步类的基本线程阻塞原语。JDK中大量的线程阻塞和唤醒都是使用LockSupport来实现的。每个使用LockSupport的线程都会关联一个许可证(permit)。如果某个线程持有许可证,则该线程调用park方法会立即返回,并且消费掉这个许可证;否则该线程会被阻塞。调用unpark方法会让对应的线程拥有许可证(注意:许可证不会被累加,每个线程最多持有一...原创 2019-02-02 22:42:31 · 326 阅读 · 0 评论 -
线程池ThreadPoolExecutor实现原理分析
前言线程池是并发中一项常用的优化方法,通过对线程的复用,减少线程的创建,降低资源消耗,提高程序响应速度。在Java中我们一般通过Executors提供的工厂方法来创建线程池,但是线程池的最终实现类是ThreadPoolExecutor,下面我们详细分析一下ThreadPoolExecutor的实现。基本使用...原创 2019-01-30 14:14:45 · 495 阅读 · 0 评论