Java 共 80 篇文章

Java SoftReference软引用在缓存中的GC回收策略
2026-04-22 13:24:40
Java SoftReference软引用在缓存中的GC回收策略 Java SoftReference(软引用)是构建内存敏感型高速缓存的关键工具。它允许对象在内存充足时保持存活,而在内存不足时被垃圾回收器(GC)回收,从而有效避免OutOfMemoryError。以下将详细阐述其GC回收策略及在缓
Java 软引用 缓存
59 0
Java Thread.sleep的精度与操作系统调度粒度
2026-04-22 07:23:06
Java Thread.sleep的精度与操作系统调度粒度 Java多线程编程中,控制线程执行节奏最直接的手段是调用 Thread.sleep。许多开发者默认认为传入 1000 毫秒,线程就会在精确的1000毫秒后恢复运行。然而,实际测试中往往会发现睡眠时间总是略长于设定值。这并非代码错误,而是由底
Java 多线程 线程休眠
54 0
Java Full GC频繁触发的排查思路:从JVM参数到代码优化
2026-04-22 05:19:45
Java Full GC频繁触发的排查思路:从JVM参数到代码优化 当生产环境的服务出现CPU飙升、接口响应超时,且监控告警提示频繁Full GC时,意味着系统正处于由于内存回收导致的停顿风险中。Full GC会暂停所有应用线程(StopTheWorld),导致系统在此时无法处理任何请求。为了快速定
Java FullGC JVM调优
66 0
Java AtomicStampedReference解决ABA问题的版本号机制
2026-04-22 02:23:53
Java AtomicStampedReference解决ABA问题的版本号机制 在多线程环境中使用 CAS(CompareAndSwap)操作时,会遇到一个被称为“ABA 问题”的典型陷阱。简单来说,就是一个共享变量的值从 A 变成了 B,又从 B 变回了 A。其他线程若只检查值,会误以为它从未被
Java 多线程 并发编程
57 0
Java CompletableFuture.thenAccept与thenRun的返回值差异
2026-04-22 01:13:09
Java CompletableFuture.thenAccept与thenRun的返回值差异 在 Java 异步编程中,CompletableFuture 是处理并发任务的核心工具。理解 thenAccept 和 thenRun 的区别,对于精准控制任务执行流程和数据传递至关重要。以下指南将手把手
Java 异步编程 并发编程
61 0
Java CompletableFuture.supplyAsync的默认线程池陷阱
2026-04-21 13:21:28
Java CompletableFuture.supplyAsync的默认线程池陷阱 在Java后端开发中,为了提高接口响应速度,常使用 CompletableFuture.supplyAsync 进行异步编排。然而,若使用不当,这个看似简便的API会成为系统性能的“隐形杀手”。当系统在高峰期出现莫
Java 并发编程 线程池
66 0
Java AQS独占锁与共享锁的实现差异
2026-04-21 02:20:08
Java AQS独占锁与共享锁的实现差异 Java 并发包(JUC)中的 AbstractQueuedSynchronizer(AQS)是构建锁和同步器的基础框架。AQS 内部主要维护了一个由双向链表组成的同步队列,并使用一个 volatile int state 变量来表示同步状态。理解独占锁与共
Java AQS 独占锁
67 0
Java ThreadGroup的activeCount与枚举活动线程的竞态条件
2026-04-20 20:30:44
Java ThreadGroup的activeCount与枚举活动线程的竞态条件 在Java多线程开发中,ThreadGroup 类提供了一种将多个线程归类管理的便捷方式。开发者经常需要获取组内所有活动线程的引用以进行监控或批量操作。通常的做法是结合使用 activeCount 和 enumerat
Java 多线程 线程组
55 0
Java CMS垃圾收集器的浮动垃圾与Concurrent Mode Failure
2026-04-20 02:26:26
Java CMS垃圾收集器的浮动垃圾与Concurrent Mode Failure CMS(Concurrent Mark Sweep)收集器以获取最短回收停顿时间为目标,允许垃圾收集线程与用户线程并发执行。这种设计虽然降低了停顿时间,但也引入了“浮动垃圾”和“Concurrent Mode Fa
Java CMS 垃圾回收
62 0
Java Thread.setUncaughtExceptionHandler的异常捕获范围
2026-04-19 18:17:05
Java Thread.setUncaughtExceptionHandler的异常捕获范围 Java 多线程编程中,线程一旦抛出未检查异常且未被捕获,线程会直接终止,且默认情况下仅会将堆栈信息打印到控制台,这会导致问题难以追踪和监控。使用 Thread.setUncaughtExceptionHa
Java 多线程 异常处理
76 0
Java LockSupport.park与unpark的线程阻塞唤醒机制
2026-04-19 12:19:10
Java LockSupport.park与unpark的线程阻塞唤醒机制 LockSupport 是 Java 并发包 java.util.concurrent.locks 中最基础的线程阻塞原语,用于构建锁和其他同步工具。与传统的 Object.wait/notify 相比,它不需要获取监视器锁
Java 多线程 并发编程
57 0
Java 枚举:enum 类型的定义与使用
2026-04-18 11:19:50
Java 枚举:enum 类型的定义与使用 Java 枚举(enum)是一种特殊的类,用于定义一组固定的常量。它比传统的静态常量更安全、功能更强大。本指南将从基础定义到高级应用,逐步讲解如何使用枚举。 1. 基础定义与使用 枚举最基本的用法是定义一组有限的选项,例如星期、季节或状态。 定义一个简单的
Java 枚举 enum
82 0
Java 数据库问题:SQLException 与连接池配置
2026-04-16 07:14:07
Java 数据库问题:SQLException 与连接池配置 Java 应用程序与数据库交互时,java.sql.SQLException 是最令人头疼的异常之一。这通常并非代码逻辑错误,而是环境配置、网络波动或连接池参数设置不当的结果。本文将通过具体步骤,指导你如何定位并解决常见的数据库连接问题。
Java 数据库 SQLException
68 0
Java 垃圾回收算法:G1与ZGC的停顿时间对比
2026-04-15 12:20:34
Java 垃圾回收算法:G1与ZGC的停顿时间对比 高并发、低延迟是现代Java应用的核心诉求。在众多垃圾回收器(GC)中,G1(GarbageFirst)长期作为JDK 8以来的默认选择,而ZGC(Z Garbage Collector)则是后来居上的低延迟新星。深入理解两者在停顿时间上的底层差异
Java 垃圾回收 G1
68 0
Java 接口实现:implements 关键字
2026-04-15 07:22:37
Java 接口实现:implements 关键字 Java 接口定义了一组规则,而 implements 关键字则是类遵守这些规则的承诺。当你在类定义中使用 implements 时,必须实现接口中声明的所有方法,除非该类被声明为抽象类。这种机制让 Java 能够实现“多重继承”的效果,并保证不同类
Java 接口 Java基础
53 0
Java 集合框架:ArrayList 与 LinkedList 的性能对比
2026-04-15 03:26:53
Java 集合框架:ArrayList 与 LinkedList 的性能对比 在 Java 开发中,ArrayList 和 LinkedList 是 List 接口最常用的两个实现类。尽管它们存储数据的方式相似,但在底层原理和性能表现上却有着天壤之别。选择错误的集合类型可能会导致程序在处理大量数据时
Java 集合框架 性能对比
53 0
Java 线程局部变量ThreadLocal内存泄漏分析
2026-04-14 17:26:50
Java 线程局部变量ThreadLocal内存泄漏分析 认识 ThreadLocal的基本概念。ThreadLocal是Java中提供的一种线程绑定机制,它能让每个线程拥有自己的变量副本,避免了多线程环境下的资源竞争问题。当你在一个线程中设置ThreadLocal变量时,这个变量只对该线程可见,其
Java ThreadLocal 内存泄漏
79 0
Java 堆外内存DirectBuffer的分配与回收
2026-04-14 06:18:01
Java 堆外内存 DirectBuffer 的分配与回收 Java 堆外内存(OffHeap Memory)是指直接在 JVM 堆之外分配的内存,主要由操作系统管理。使用 DirectBuffer(特别是 DirectByteBuffer)操作堆外内存,可以避免数据在 Java 堆和本地堆之间复制
Java 堆外内存 DirectBuffer
78 0
Java 序列化:Serializable 接口与 ObjectOutputStream
2026-04-13 05:17:13
Java 序列化:Serializable 接口与 ObjectOutputStream Java 序列化机制允许将对象转换为字节序列,以便存储到硬盘或在网络中传输。通过 Serializable 接口和 ObjectOutputStream,开发者可以轻松实现对象的持久化。以下是其具体使用方法与核
Java 序列化 反序列化
70 0
Java 注解处理器在编译期代码生成
2026-04-13 01:19:13
Java 注解处理器在编译期代码生成 Java 注解处理器是编译器的一个插件,它在编译 Java 源代码时运行,扫描特定的注解并生成额外的 Java 源文件或资源文件。这种方式常用于减少样板代码(如 ButterKnife, Glide, EventBus)或在编译期进行代码检查(如 Lint)。本
Java 注解处理器 代码生成
48 0