
JUC进阶
文章平均质量分 94
JUC基础入门后,进阶使用
有一只柴犬
公众号“柴犬说编程”创作者,优快云全栈新星创作者,博客专家,阿里云专家博主。
管住嘴,迈开腿。一个努力接受现在的自己的程序员。保持技术保温的同时,分享自己的学习知识。
个人开源Github地址:https://github.com/Shamee99
展开
-
【JUC进阶】14. TransmittableThreadLocal
书接上回《【JUC进阶】13. InheritableThreadLocal》,提到了InheritableThreadLocal虽然能进行父子线程的值传递,但是如果在线程池中,就无法达到预期的效果了。为了更好的解决该问题,TransmittableThreadLocal诞生了。原创 2024-01-14 15:37:24 · 1792 阅读 · 39 评论 -
【JUC进阶】13. InheritableThreadLocal
在《【JUC基础】14. ThreadLocal》一文中,介绍了ThreadLocal主要是用于每个线程持有的独立变量。通俗的说就是ThreadLocal是每个线程独有的一份内存,且各个线程间是独立、隔离的。原创 2024-01-08 20:51:09 · 2480 阅读 · 50 评论 -
【JUC进阶】12. 环形缓冲区
上一篇《【JUC进阶】11. BlockingQueue》中介绍到ArrayBlockingQueue,在物理上是一个数组,但在逻辑上来说是个环形结构。这就衍生出来我们今天要介绍的主题,环形缓冲区。原创 2023-07-13 08:17:47 · 1691 阅读 · 34 评论 -
【JUC进阶】11. BlockingQueue
对于并发程序而言,高性能自然是一个我们需要追求的目标,但多线程的开发模式还会引入一个问题,那就是如何进行多个线程间的数据交换和共享呢?而JUC库中提供了多种并发队列和环形缓冲区的实现,为我们提供了高性能和线程安全的数据结构。原创 2023-07-10 21:53:09 · 806 阅读 · 69 评论 -
【JUC进阶】10. 使用JMH进行性能测试
软件开发中,除要写出正确的代码之外,还需要写出高效的代码。这在并发编程中更加重要,原因主要有两点。首先,一部分并发程序由串行程序改造而来,其目的就是提高系统性能,因此,自然需要有一种方法对两种算法进行性能比较。其次,由于业务原因引入的多线程有可能因为线程并发控制导致性能损耗,因此要评估损耗的比重是否可以接受。无论出自何种原因需要进行性能评估,量化指标总是必要的。在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢? 这就是本节要介绍的 Java 微基准测试框架JMH。原创 2023-07-06 19:33:49 · 1080 阅读 · 83 评论 -
【JUC进阶】09. 关于锁升级
在并发编程中,锁是保证线程安全的重要机制。然而,传统的锁在高并发场景下性能可能受到限制。为了解决这个问题,JUC引入了锁升级的概念,通过在运行时动态调整锁的状态,提升并发性能。前面我们分别介绍了无锁,偏向锁,轻量级锁,自旋锁,重量级锁的知识。这些其实就是JUC中对锁的优化而会转换的几种状态,也就是我们经常听到的锁升级。原创 2023-07-03 13:00:13 · 1013 阅读 · 53 评论 -
【JUC进阶】08. 重量级锁
前面我们介绍了偏向锁,轻量级锁,自旋锁相关知识。初次之外,锁升级过程还会涉及到重量级锁。重量级锁是并发编程中常用的同步机制之一,它能够确保对共享资源的互斥访问,但由于其较高的开销,需要在合适的场景中使用。今天我们就来深入聊聊关于重量级锁,以及他的原理和性能分析。原创 2023-06-30 00:25:52 · 451 阅读 · 27 评论 -
【JUC进阶】07. 自旋锁
从JDK6版本开始,HotSpot虚拟机开发团队就花费了大量的资源来实现各种的锁优化技术,前面介绍到的轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)就是其中的两种方式,而今天要讲的自旋锁(Adaptive Spinning)也是为了在线程之间更高效地共享数据及解决竞争问题,从而提高程序的执行效率。原创 2023-06-29 08:18:10 · 739 阅读 · 27 评论 -
【JUC进阶】06. 轻量级锁
前面一节我们讲到了偏向锁。当偏向锁被撤销,或其他线程竞争的时候,偏向锁会撤销并且升级为轻量级锁。轻量级锁(Lightweight Lock)机制,它是一种介于偏向锁和重量级锁之间的锁实现。原创 2023-06-28 08:21:04 · 1964 阅读 · 33 评论 -
【JUC进阶】05. 偏向锁
偏向锁是Java并发编程中一种重要的锁机制,它针对特定的线程进行优化,从而提高了并发性能。这种锁机制在多线程场景下非常常见,特别适用于一些读写分离的应用场景。原创 2023-06-26 08:21:36 · 3837 阅读 · 33 评论 -
【JUC进阶】04. 无锁CAS
无锁的Compare and Swap(CAS)操作是一种高效的并发编程技术,通过原子性的比较和交换操作,实现了无锁的线程同步。在我之前的文章《简单理解CAS》中已经有介绍过关于CAS了,今天我们再来重新回顾以及整理一遍。原创 2023-06-25 13:06:15 · 693 阅读 · 24 评论 -
【JUC进阶】03. Java对象头和内存布局
为了后面更好的学习锁优化以及运作过程,需要我们对HotSpot虚拟机的Java对象内存布局有一定的了解,也作为技术储备。原创 2023-06-21 08:24:49 · 1802 阅读 · 44 评论 -
【JUC进阶】02. volatile关键字
volatile 是 JVM 提供的轻量级的同步机制。volatile 关键字可以保证并发编程三大特征(原子性、可见性、有序性)中的可见性和有序性,不能保证原子性。原创 2023-06-19 08:15:06 · 745 阅读 · 92 评论 -
【JUC进阶】01. Synchroized实现原理
Synchronized是在并发编程中很经常使用,Java中除了提供Lock等API来实现互斥以外,还提供了语法(关键字)层面的Synchronized来实现互斥同步原语,今天闲来聊聊Synchronized关键字。原创 2023-06-16 08:20:07 · 652 阅读 · 36 评论