![](https://i-blog.csdnimg.cn/direct/8f6fc478f08940259ad0091d3db6ce34.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JUC
文章平均质量分 97
Hello Dam
阿里云“专家博主”,支付宝“社区优秀博主”。在读研究生,研究方向为工业智能优化算法和智能制造系统设计与开发。本人有企业项目开发经验,所开发的项目已上线运行,有一定创新能力,在求学期间授权发明专利7项、软著5项、获得多个国家级、省级竞赛奖项,获过研究生国家奖学金。进行博客创作是想将自己摸索到的一点经验、踩过的坑和大家一起分享,希望可以帮助大家解决一些问题、少走一些弯路,也期待能和大家一起学习交流、共同进步。
展开
-
【JUC】AQS(AbstractQueuedSynchronizer, 抽象队列同步器)
本文档概述了AQS(Abstract Queued Synchronizer)的基础理论知识及其在Java并发控制中的核心地位。AQS作为Java并发库(JUC)的基石,通过一个抽象的FIFO队列和一个表示同步状态的int变量,为锁和其他同步组件提供了一个通用的实现框架。文档解释了公平锁与非公平锁的区别、可重入锁的概念、自旋思想以及LockSupport的作用,并介绍了AQS内部的CLH队列变体和关键数据结构——Node节点,深入浅出地剖析了AQS的工作原理。原创 2024-08-10 20:56:46 · 753 阅读 · 0 评论 -
【JUC】 Synchronized与锁升级
该文件主要介绍了Java中Synchronized的相关内容,包括其在Java 5以前是操作系统级别的重量级操作,Java 6后引入轻量级锁和偏向锁及它们的升级步骤、实现原理等。还提及了JIT编译器对锁的优化,如锁消除和锁粗化。此外,说明了各种锁的适用场景和优缺点,并指出Java 15后逐步废弃偏向锁的原因。原创 2024-08-10 15:34:49 · 590 阅读 · 0 评论 -
【JUC】Java对象内存布局和对象头
本文档概述了Java对象在HotSpot虚拟机中的内存布局,包括对象头、实例数据及对齐填充三部分。重点解析了对象头中的Mark Word,它是一个灵活的数据结构,存储了如hashCode、分代年龄和锁状态等信息,并能在不同锁状态下复用存储空间。文档还介绍了如何使用Java Object Layout (JOL) 工具来验证对象的实际内存布局,并展示了默认情况下新创建的简单对象占用16字节空间的原因,以及开启或关闭压缩指针选项对对象大小的影响。原创 2024-08-06 19:03:51 · 1063 阅读 · 0 评论 -
【JUC】线程局部变量ThreadLocal
本文档介绍了Java中的`ThreadLocal`概念及其使用方法,包括其基本原理、API使用、内存管理及最佳实践。文档解释了`ThreadLocal`如何为每个线程提供独立的变量副本以避免线程安全问题,并探讨了初始化方法、内存泄漏的风险以及如何通过弱引用来减轻这些问题。此外,还提供了示例代码和实践建议,帮助读者更好地理解和运用`ThreadLocal`。原创 2024-07-28 16:20:12 · 270 阅读 · 0 评论 -
【JUC】原子操作类
本文档介绍了Java中几种原子类的基本概念与使用方法,包括`AtomicInteger`、`AtomicBoolean`、`AtomicLong`等基本类型的原子类及其常用API。文档还探讨了`LongAdder`和`LongAccumulator`的特性与应用场景,并通过示例代码展示了这些原子类在多线程环境下的性能对比。此外,文中还涉及了引用类型原子类如`AtomicReference`和对象属性修改原子类如`AtomicIntegerFieldUpdater`的使用目的及要求,旨在帮助读者更好地理解和运原创 2024-07-28 15:20:26 · 845 阅读 · 0 评论 -
【JUC】CAS(轻量级加锁)
本文档探讨了Java中的原子类及其实现原理,重点讲解了CAS(Compare-and-Swap)机制如何用于保证多线程环境下的操作原子性。文档通过对比加锁方式与CAS方式实现i++的区别,详细解释了CAS的工作流程及其优缺点,并提供了AtomicInteger和AtomicStampedReference的使用示例。此外,还介绍了自旋锁的概念及其简单实现,帮助读者理解这些并发工具在实际开发中的应用。原创 2024-07-28 10:07:08 · 783 阅读 · 0 评论 -
【JUC】volatile关键字
本文档探讨了Java中`volatile`关键字的关键特性及其背后的内存屏障机制。首先解释了`volatile`如何通过确保变量的可见性和有序性来增强多线程程序的正确性,同时指出它并不能保证操作的原子性。接着深入介绍了内存屏障的概念,包括其在防止代码重排序中的作用,并通过实例展示了如何使用`volatile`来维护共享变量的一致性。文档还包括了一些示例代码,演示了`volatile`在实际应用中的效果与限制。原创 2024-07-28 09:44:49 · 1375 阅读 · 0 评论 -
【JUC】JMM(Java Memory Model,Java内存模型)
本文档概述了Java内存模型(JMM)的核心概念及其三大特性:可见性、原子性和有序性。文档解释了JMM如何确保多线程环境下变量操作的一致性,并介绍了happens-before原则,这是一种确保操作间有序性和可见性的机制。通过案例分析,文档展示了在缺乏适当同步机制时可能出现的问题,并提出了使用`synchronized`和`volatile`等关键字的解决方案。此外,还详细阐述了JMM下的内存访问规范以及指令重排序的影响。原创 2024-07-27 18:37:36 · 793 阅读 · 0 评论 -
【JUC】LockSupport线程等待唤醒
本文探讨了Java中线程间的等待与唤醒机制,包括传统`Object`类的`wait()`和`notify()`方法、`Condition`接口的`await()`与`signal()`方法,以及`LockSupport`类的`park()`和`unpark()`方法。通过示例代码演示了这些方法的正确使用方式及其限制,如必须在同步代码块内使用`wait()`/`notify()`,而`LockSupport`则无需锁即可操作。原创 2024-07-27 18:26:27 · 820 阅读 · 0 评论 -
【JUC】线程中断
本文档探讨了Java中的线程中断机制,包括如何安全地中断运行中的线程以及相关的API使用方法。文档首先介绍了传统的`Thread.stop`等方法的弊端,并解释了现代Java中推荐使用的中断协商机制。通过示例代码,文档详细分析了`interrupt()`, `isInterrupted()`, 和`Thread.interrupted()`三个关键方法的作用与区别,并展示了如何利用这些方法及volatile变量来优雅地停止线程。此外,还特别注意到了在线程阻塞状态下中断处理的细节问题及其解决方案。原创 2024-07-26 22:04:52 · 1069 阅读 · 0 评论 -
【JUC】Java锁介绍
本文档概述了阿里锁开发规范,强调了在高并发场景下应优选无锁数据结构以减少锁的使用,并详细解释了悲观锁与乐观锁的概念及应用场景。悲观锁通过加锁确保数据一致性,适用于写操作频繁的场景;而乐观锁假设数据冲突较少,采用版本号或CAS算法验证数据状态,更适合读多写少的情况。文档还提供了synchronized关键字的不同使用方式及其锁行为的示例,包括对象锁和类锁的使用,并展示了如何通过代码模拟不同线程间的交互,以及如何排查潜在的死锁问题。原创 2024-07-26 21:46:53 · 635 阅读 · 0 评论 -
【JUC】JUC简要介绍
本文介绍了Java并发工具包JUC(java.util.concurrent),探讨了其在现代多核处理器环境下的重要性。随着摩尔定律的发展趋缓,提升程序性能需依赖并发编程而非单纯提高CPU主频。文章列举了学习多线程的关键点,包括线程安全、锁机制及性能考量,并简述了`Thread`类`start`方法的底层实现过程。此外,还推荐了一些学习资源,如Java 8的新特性课程和相关书籍,帮助读者更好地掌握并发编程技术。原创 2024-07-25 12:02:28 · 384 阅读 · 0 评论 -
【JUC】Java多线程相关概念
本文简要介绍了计算机科学中的并发与并行概念、进程与线程的区别,以及守护线程的特性。通过示例代码展示了如何设置守护线程,并解释了管程(Monitor)作为同步机制的作用。这些基础知识对于理解现代多线程编程至关重要。原创 2024-07-25 12:13:13 · 684 阅读 · 0 评论 -
【JUC】使用CompletableFuture执行异步任务
Java中的Future接口及其核心实现FutureTask,用于异步任务执行与结果获取。通过示例展示了如何使用FutureTask与线程结合,执行耗时操作而不阻塞主线程。进一步介绍了CompletableFuture,一种更高级的异步编程模型,它克服了Future的局限性,提供了更优雅的回调机制和丰富的组合操作,如thenApply、thenAccept、thenRun等,支持链式调用和错误处理。文章还比较了同步与异步获取结果的不同方式,强调了CompletableFuture在现代高并发场景下的优势。原创 2024-07-14 22:07:00 · 1084 阅读 · 0 评论