三色标记算法是一种 JVM 的垃圾标记算法,它可以让 JVM 发生短暂的 STW(Stop The World)的情况下实现存活对象标记。
本文介绍了Java中的线程池,特别是ThreadPoolExecutor的工作原理、状态管理、构造方法及其参数、不同类型的线程池(如固定线程池、缓存线程池、单线程池等),以及如何提交任务、关闭线程池和捕捉异常。强调了线程池的状态变化、拒绝策略和工作窃取机制等关键概念。
本文探讨了Java中synchronized的实现机制,重点介绍了对象头的结构及其Mark Word的不同状态,包括无锁、偏向锁、轻量级锁和重量级锁。随着JVM的优化,锁的状态可以根据线程竞争情况动态升级或降级,以提高性能。偏向锁在没有竞争时优化了性能,而轻量级锁和重量级锁则适用于不同的竞争场景。文章还提到了一些锁的撤销和重偏向机制,以及如何通过CAS操作实现锁的获取和释放。
本文介绍了单例模式的多种实现方式,包括饿汉式、懒汉式(不安全和安全)、双重检测懒汉式、静态内部类和枚举式。每种方式的实现细节和线程安全性问题都进行了详细讨论,并提供了相应的Java代码示例。