欢迎来到《并发王者课》,本文是该系列文章中的第17篇。 在并发编程中,信号量是线程同步的重要工具。在本文中,我将带你认识信号量的概念、用法、种类以及Java中的信号量。 信号量(Semaphore) 是线程间的同步结构,主要用于多线程协作时的信号传递,以及对共享资源的保护、防止竞态的发生 ...
欢迎来到 并发王者课 ,本文是该系列文章中的第 篇,铂金中的第 篇。 在前面的文章中,我们已经介绍了ReentrantLock,CountDownLatch,CyclicBarrier,Semaphore等同步工具。在本文中,将为你介绍最后一个同步工具,即Exchanger. Exchanger用于两个线程在某个节点时进行数据交换。在用法上,Exchanger并不复杂,但是实现上会稍微有点费解。所 ...
2021-07-08 10:21 0 182 推荐指数:
欢迎来到《并发王者课》,本文是该系列文章中的第17篇。 在并发编程中,信号量是线程同步的重要工具。在本文中,我将带你认识信号量的概念、用法、种类以及Java中的信号量。 信号量(Semaphore) 是线程间的同步结构,主要用于多线程协作时的信号传递,以及对共享资源的保护、防止竞态的发生 ...
欢迎来到《并发王者课》,本文是该系列文章中的第23篇,铂金中的第10篇。 说起ThreadLocal,相信你对它的名字一定不陌生。在并发编程中,它有着较高的出场率,并且也是面试中的高频面试题之一,所以其重要性不言而喻。当然,它也可能曾经让你在夜里辗转反侧,或让你在面试时闪烁其词 ...
欢迎来到《并发王者课》,本文是该系列文章中的第20篇。 在上一篇文章中,我们介绍了Condition的用法。在本文中,将为你介绍CountDownLatch的用法。CountDownLatch是JUC中的一款常用工具类,当你在编写多线程代码时,如果你需要协调多个线程的开始和结束动作时,它可 ...
欢迎来到《并发王者课》,本文是该系列文章中的第21篇,铂金中的第8篇。 在上一篇文章中,我们介绍了CountDownLatch的用法。在协调多线程的开始和结束时,CountDownLatch是个非常不错的选择。而本文即将给你介绍的CyclicBarrier则更加有趣,它在能力 ...
本文翻译自LMAX关于Disruptor的论文,同时加上一些自己的理解和标注。Disruptor是一个高效的线程间交换数据的基础组件,它使用栅栏(barrier)+序号(Sequencing)机制协调生产者与消费者,从而避免使用锁和CAS,同时还组合使用预分配内存机制、缓存行机制(cache ...
欢迎来到《并发王者课》,本文是该系列文章中的第15篇。 在上篇文章中,我们介绍了Java中锁的基础Lock接口。在本文中,我们将介绍Java中锁的另外一个重要的基本型接口,即ReadWriteLock接口。 在探索Java中的并发时,ReadWriteLock无疑是重要的,然而理解它却并不 ...
欢迎来到《并发王者课》,本文是该系列文章中的第18篇。 在线程的同步中,阻塞队列是一个绕不过去的话题,它是同步器底层的关键。所以,我们在本文中将为你介绍阻塞队列的基本原理,以了解它的工作机制和它在Java中的实现。本文稍微有点长,建议先了解大纲再细看章节。 一、阻塞队列介绍 在生活中,相信你 ...
欢迎来到《并发王者课》,本文是该系列文章中的第19篇。 在上一篇文章中,我们介绍了阻塞队列。如果你阅读过它的源码,那么你一定会注意到源码有两个Condition类型的变量:notEmpty和notFull,在读写队列时你也会注意到它们是如何被使用的。事实上,在使用JUC中的各种锁时 ...