java String类型的变量和常量做“+”运算时发生了什么
在Java中,String常量进行"+"运算时,编译器会进行常量折叠优化(如"Hello" + "World"直接合并为常量池中的"HelloWorld");而涉及变量时(如str1 + str2),编译器会隐式转换为StringBuilder的append操作,每次拼接均创建新String对象,导
java
未读
Java CAS无锁编程与原子类
Java的CAS(Compare And Swap)无锁编程通过硬件级原子指令实现线程安全操作,避免了传统锁的阻塞开销和死锁风险,尤其在低竞争场景下性能优势显著;原子类(如AtomicInteger、AtomicStampedReference、LongAdder)是CAS的具体实现,适用于计数器(
java
未读
Java内存模型与Happens-Before原则
Java内存模型(JMM)通过happens-before原则(包含程序顺序、监视器锁、volatile变量、线程启动/终止、中断、终结器及传递性八大规则)定义了多线程环境下操作的可见性与顺序关系,确保共享变量在并发场景下的正确性;实践中需严格区分volatile(仅保证可见性,不保证原子性)与sy
java
未读
Java锁优化机制:自旋锁、偏向锁、轻量级锁
Java锁优化机制(偏向锁、轻量级锁、自旋锁)通过动态状态升级(无锁→偏向锁→轻量级锁→重量级锁)减少锁竞争开销:偏向锁针对单线程重复获取场景(JDK 15+已废弃),轻量级锁利用CAS实现低竞争无阻塞同步,自旋锁在锁持有时间极短时避免线程阻塞;适用场景包括单线程缓存/计数器(偏向锁)、竞争不激烈的
java
未读
Java线程池最佳实践与定制化
Java线程池最佳实践的核心在于避免使用Executors工厂方法,必须直接通过ThreadPoolExecutor自定义所有参数:根据任务类型配置核心线程数(CPU密集型=CPU核心数×1.5,IO密集型=CPU核心数×2.5),必须使用有界队列(如ArrayBlockingQueue)防止OOM
java
未读
Java AQS(AbstractQueuedSynchronizer)框架原理
AQS(AbstractQueuedSynchronizer)是Java并发包的核心同步框架,通过状态变量(state) 和CLH变体等待队列实现线程安全的同步机制,采用模板方法模式让子类只需实现tryAcquire/tryRelease等钩子方法即可构建自定义同步器。其核心价值在于:统一管理线程阻
java
未读
Java AQS在具体项目开发中的使用示例
AQS(AbstractQueuedSynchronizer)作为Java并发框架的核心基础,通过统一的状态管理与CLH队列机制,使开发者能高效构建如ReentrantLock(可重入锁)、Semaphore(信号量)、CountDownLatch(倒计时器)、ReentrantReadWriteL
java
未读
CLH队列机制的工作原理
CLH队列(Craig-Landin-Hagersten队列)是一种基于链表的自旋锁等待队列,是Java并发包中AQS(AbstractQueuedSynchronizer)框架的核心实现机制。 核心原理 CLH队列是一种**FIFO(先进先出)**的双向链表结构,每个节点代表一个等待锁的线程。其核
java
未读
Java Unsafe类
Java Unsafe类(JDK 17中位于jdk.internal.misc)是JDK内部提供的底层工具类,需通过反射获取实例,提供直接操作内存(堆外内存分配/释放、字节级操作)、对象字段(绕过访问控制)、CAS原子操作及线程挂起(park/unpark)等核心能力,常用于高性能框架(如Netty
java
未读
ConcurrentHashMap与CopyOnWriteArrayList
Java JUC包中的ConcurrentHashMap(JDK 1.8实现,基于CAS+synchronized+红黑树)适用于读写均衡的高并发场景(如缓存、实时计数器),提供高吞吐量和弱一致性;CopyOnWriteArrayList采用写时复制机制,适合读多写少的场景(如事件监听器、配置管理)

