概述 CMS 是 Concurrent Mark Sweep 的缩写,由名字可知是一款并行的用标记清除算法的收集器,其收集目标是以获取最短回收停顿时间的收集器,其是作用于老年...

概述 CMS 是 Concurrent Mark Sweep 的缩写,由名字可知是一款并行的用标记清除算法的收集器,其收集目标是以获取最短回收停顿时间的收集器,其是作用于老年...
枚举根节点的效率 枚举根节点是必须要停顿用户线程的会引起 stop the world,如果按照上文所说的所有 GCRoots 去主动遍历它们,将会是一个相当耗时的过程,显然...
为什么需要垃圾收集 在回答这个问题之前,可以先比较目前最流行的两款面向对象的语言 JAVA 和 C++。JAVA 是带垃圾收集功能的,而 C++ 是没有垃圾收集功能的。其本质...
整体介绍 线索二叉树是链表表示的树,它是利用了二叉树未被使用的 n + 1个闲置的指针构成的树;根据二叉树的三种遍历方式构成了三种不同的线索二叉树;二叉树的遍历只能从根结点开...
二叉树的创建 二叉树的创建用到了辅助队列,通过辅助队列来创建二叉树; 二叉树的遍历 前(先)序遍历 1、递归实现 2、非递归实现 中序遍历 1、递归实现 2、非递归实现 后序...
概念 二叉树中所有结点的度不大于2的树,可以为空,但是只要存在结点,结点的度不能大于2;二叉树是一种有序树,树的左右子树不能颠倒,颠倒后则是一棵新二叉树,即使只有左或右子树也...
什么是树 树是n(n>=0)个结点的有限集。n=0是代表是一棵空树; 非空树满足的条件(n>0) 1、有且仅有一个根节点;2、当n>1时,其余结点又可以再分为m个有限集,并且...
概述 在上一篇文章中介绍了 JDK 中提供的线程池类 ThreadPoolExecutor 以及线程池的参数,在实际使用中需要了解个参数的含义从而才能正确的使用线程池来达到我...
概述 多线程并行处理任务是压榨 CPU 的最有效方式,而线程在执行完任务后如果直接销毁,这个是对资源的浪费,于是就有了池化的概念;创建一个包含多个线程的池,当需要用到线程是是...
LockSupport 的功能 LockSupport 是JDK 中提供的一个工具类,用来挂起和唤醒线程,这个类是 JDK 中所有同步类的基础,JDK 中 AQS 的实现也是...
概述 这次介绍的是 Java8 中提供的一些日期类,它们是借鉴了 Joda Time 实现的一个更方便进行日期操作的工具类的集合,下面介绍这些类的含义以及大概的使用方法。 L...
线程池状态转换流程 上一篇文章介绍了线程池的五种状态各种的含义,今天来介绍这五种状态是怎么流转的,还是看线程池的源码,首先来一张线程池状态流转图 线程池各状态转换 RUNIN...
线程池类图 ps:该线程池的类图参考的是《Java 并发编程之美》。 线程池部分源码解释 如下是 ThreadPoolExecutor 的部分源码,主要是体现线程池的几种状态...
避免使用 setNx 命令 1、setNx 带来的问题 在使用 setNx 命令来给程序加分布式锁的时候,一般都需要再使用 expire 命令来设置一个过期时间,避免死锁现象...
ThreadLocal 能做什么 ThreadLocal 是 JDK 提供的一个工具类,它可以为每个使用它的线程创建一个线程本地的副本,从而能保证多个线程在访问时的安全问题。...
什么是死锁 首先死锁的产品肯定是发生在两个或者两个以上的线程之间,因为线程请求独占资源时,由于资源被对方占用,自身被挂起等待;从而造成相互等待,在没有干预时,将会一直等待下去...
停止线程的方式 在 Java 中停止线程的方式有三种:1、线程的 run 方法执行到最后,线程正常结束并退出;2、使用 Thread 类提供的 stop 方法去停止一个正在运...
背景介绍 为什么进行数据归档?因为在实际工作中,数据都是需要保存在数据库的,但是由于数据库本身的特性,当数据量太大会对数据库的性能有较大的影响,因此需要减少数据,将一些过旧的...
概念介绍 要让当前正被 CPU 执行的线程让度出 CPU,其实有两种方式。一种是被动的,比如当前线程需要进行 IO 操作;但是这里讨论的是一种主动让度的方式。而要达到主动的让...
场景介绍 在实际的工作过程中,为了减少用户的等待时间,通常会使用多线程去并行处理相关任务。主任务线程等待其他并行任务处理完成后,获取执行的结果,经过相关处理,返回给用户。这种...