歡迎來到《並發王者課》,本文是該系列文章中的第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中的各種鎖時 ...