Java 共 83 篇文章

Java VarHandle替代Unsafe进行原子操作的安全方案
2026-04-23 11:14:03
Java VarHandle替代Unsafe进行原子操作的安全方案 Unsafe是Java中一个强大的工具类,但存在诸多安全风险和限制。Java 9引入的VarHandle提供了一种更安全、更灵活的替代方案,用于进行底层的原子操作。 Unsafe的问题和限制 Unsafe类位于sun.misc包中,
Java VarHandle 原子操作
81 0
Java ReentrantReadWriteLock的锁降级机制实现
2026-04-23 06:16:13
Java ReentrantReadWriteLock的锁降级机制实现 在Java并发编程中,ReentrantReadWriteLock 提供了一种比互斥锁更灵活的锁机制,允许多个线程同时读取,但写入时独占。锁降级是一种重要的优化策略,它指的是持有写锁的线程在释放写锁之前,先获取读锁,随后再释放写
Java 并发编程 读写锁
66 0
Java LongAdder在高并发计数场景下的分段锁优化
2026-04-23 04:25:28
Java LongAdder在高并发计数场景下的分段锁优化 在并发编程中,统计计数(如点击量、请求数)是极其常见的需求。JDK 8 之前,我们通常使用 AtomicLong 或 synchronized 来实现线程安全计数。然而,在极高的并发场景下,这两种方案都会遇到性能瓶颈。LongAdder 是
Java LongAdder 高并发
85 0
Java SoftReference软引用在缓存中的GC回收策略
2026-04-22 13:24:40
Java SoftReference软引用在缓存中的GC回收策略 Java SoftReference(软引用)是构建内存敏感型高速缓存的关键工具。它允许对象在内存充足时保持存活,而在内存不足时被垃圾回收器(GC)回收,从而有效避免OutOfMemoryError。以下将详细阐述其GC回收策略及在缓
Java 软引用 缓存
89 0
Java Thread.sleep的精度与操作系统调度粒度
2026-04-22 07:23:06
Java Thread.sleep的精度与操作系统调度粒度 Java多线程编程中,控制线程执行节奏最直接的手段是调用 Thread.sleep。许多开发者默认认为传入 1000 毫秒,线程就会在精确的1000毫秒后恢复运行。然而,实际测试中往往会发现睡眠时间总是略长于设定值。这并非代码错误,而是由底
Java 多线程 线程休眠
81 0
Java Full GC频繁触发的排查思路:从JVM参数到代码优化
2026-04-22 05:19:45
Java Full GC频繁触发的排查思路:从JVM参数到代码优化 当生产环境的服务出现CPU飙升、接口响应超时,且监控告警提示频繁Full GC时,意味着系统正处于由于内存回收导致的停顿风险中。Full GC会暂停所有应用线程(StopTheWorld),导致系统在此时无法处理任何请求。为了快速定
Java FullGC JVM调优
94 0
Java AtomicStampedReference解决ABA问题的版本号机制
2026-04-22 02:23:53
Java AtomicStampedReference解决ABA问题的版本号机制 在多线程环境中使用 CAS(CompareAndSwap)操作时,会遇到一个被称为“ABA 问题”的典型陷阱。简单来说,就是一个共享变量的值从 A 变成了 B,又从 B 变回了 A。其他线程若只检查值,会误以为它从未被
Java 多线程 并发编程
83 0
Java CompletableFuture.thenAccept与thenRun的返回值差异
2026-04-22 01:13:09
Java CompletableFuture.thenAccept与thenRun的返回值差异 在 Java 异步编程中,CompletableFuture 是处理并发任务的核心工具。理解 thenAccept 和 thenRun 的区别,对于精准控制任务执行流程和数据传递至关重要。以下指南将手把手
Java 异步编程 并发编程
85 0
Java CompletableFuture.supplyAsync的默认线程池陷阱
2026-04-21 13:21:28
Java CompletableFuture.supplyAsync的默认线程池陷阱 在Java后端开发中,为了提高接口响应速度,常使用 CompletableFuture.supplyAsync 进行异步编排。然而,若使用不当,这个看似简便的API会成为系统性能的“隐形杀手”。当系统在高峰期出现莫
Java 并发编程 线程池
107 0
Java AQS独占锁与共享锁的实现差异
2026-04-21 02:20:08
Java AQS独占锁与共享锁的实现差异 Java 并发包(JUC)中的 AbstractQueuedSynchronizer(AQS)是构建锁和同步器的基础框架。AQS 内部主要维护了一个由双向链表组成的同步队列,并使用一个 volatile int state 变量来表示同步状态。理解独占锁与共
Java AQS 独占锁
92 0
Java ThreadGroup的activeCount与枚举活动线程的竞态条件
2026-04-20 20:30:44
Java ThreadGroup的activeCount与枚举活动线程的竞态条件 在Java多线程开发中,ThreadGroup 类提供了一种将多个线程归类管理的便捷方式。开发者经常需要获取组内所有活动线程的引用以进行监控或批量操作。通常的做法是结合使用 activeCount 和 enumerat
Java 多线程 线程组
82 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 垃圾回收
99 0
Java Thread.setUncaughtExceptionHandler的异常捕获范围
2026-04-19 18:17:05
Java Thread.setUncaughtExceptionHandler的异常捕获范围 Java 多线程编程中,线程一旦抛出未检查异常且未被捕获,线程会直接终止,且默认情况下仅会将堆栈信息打印到控制台,这会导致问题难以追踪和监控。使用 Thread.setUncaughtExceptionHa
Java 多线程 异常处理
101 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 多线程 并发编程
84 0
Java 枚举:enum 类型的定义与使用
2026-04-18 11:19:50
Java 枚举:enum 类型的定义与使用 Java 枚举(enum)是一种特殊的类,用于定义一组固定的常量。它比传统的静态常量更安全、功能更强大。本指南将从基础定义到高级应用,逐步讲解如何使用枚举。 1. 基础定义与使用 枚举最基本的用法是定义一组有限的选项,例如星期、季节或状态。 定义一个简单的
Java 枚举 enum
121 0
Java 数据库问题:SQLException 与连接池配置
2026-04-16 07:14:07
Java 数据库问题:SQLException 与连接池配置 Java 应用程序与数据库交互时,java.sql.SQLException 是最令人头疼的异常之一。这通常并非代码逻辑错误,而是环境配置、网络波动或连接池参数设置不当的结果。本文将通过具体步骤,指导你如何定位并解决常见的数据库连接问题。
Java 数据库 SQLException
110 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
106 0
Java 接口实现:implements 关键字
2026-04-15 07:22:37
Java 接口实现:implements 关键字 Java 接口定义了一组规则,而 implements 关键字则是类遵守这些规则的承诺。当你在类定义中使用 implements 时,必须实现接口中声明的所有方法,除非该类被声明为抽象类。这种机制让 Java 能够实现“多重继承”的效果,并保证不同类
Java 接口 Java基础
85 0
Java 集合框架:ArrayList 与 LinkedList 的性能对比
2026-04-15 03:26:53
Java 集合框架:ArrayList 与 LinkedList 的性能对比 在 Java 开发中,ArrayList 和 LinkedList 是 List 接口最常用的两个实现类。尽管它们存储数据的方式相似,但在底层原理和性能表现上却有着天壤之别。选择错误的集合类型可能会导致程序在处理大量数据时
Java 集合框架 性能对比
75 0
Java 线程局部变量ThreadLocal内存泄漏分析
2026-04-14 17:26:50
Java 线程局部变量ThreadLocal内存泄漏分析 认识 ThreadLocal的基本概念。ThreadLocal是Java中提供的一种线程绑定机制,它能让每个线程拥有自己的变量副本,避免了多线程环境下的资源竞争问题。当你在一个线程中设置ThreadLocal变量时,这个变量只对该线程可见,其
Java ThreadLocal 内存泄漏
103 0