Java併發程式設計札記-(二)JUC概述
從今天開始學習JUC。JUC是java.util.concurrent包的簡稱。下圖是JUC的整體結構。
atomic
以下是JUC中的原子類。
locks
以下是JUC中的鎖,也稱顯示鎖。
collections
以下是JUC中的集合。
threadPool
以下是JUC中與執行緒池有關的類。
tools
以下是JUC中的工具類。
本文就講到這裡,想了解Java併發程式設計更多內容請參考:
END.
相關推薦
Java併發程式設計札記-(二)JUC概述
從今天開始學習JUC。JUC是java.util.concurrent包的簡稱。下圖是JUC的整體結構。 atomic 以下是JUC中的原子類。 locks 以下是JUC中的鎖,也稱顯示
Java併發程式設計札記-(六)JUC執行緒池-01概述
前面的例子中總是需要執行緒時就建立,不需要就銷燬它。但頻繁建立和銷燬執行緒是很耗資源的,在併發量較高的情況下頻繁建立和銷燬執行緒會降低系統的效率。執行緒池可以通過重複利用已建立的執行緒降低執行緒建立和銷
Java併發程式設計札記-(四)JUC鎖-01概述
今天來學習JUC鎖。JUC鎖位於java.util.concurrent.locks包下,為鎖和等待條件提供一個框架,它不同於內建同步和監視器。 參考JDK1.8的java.util.concurrent.locks包,畫出如下圖: CountDown
Java併發程式設計札記-(四)JUC鎖-08CountDownLatch
CountDownLatch是一個通用同步器,用於同步一個或多個任務。在完成一組正在其他執行緒中執行的任務之前,它允許一個或多個執行緒一直等待。 可以用一個初始計數值來初始化CountDownLatch物件,任何在這個物件上呼叫wait()的方法都將阻塞,直至
Java併發程式設計札記-(四)JUC鎖-04Condition簡介
我們已經學習瞭如何通過使用鎖來同步兩個任務,但為了解決某個問題,任務之間只有互斥是不夠的,還需要相互通訊,相互協作。今天就來學習如何實現任務之間的協作。 初識Condition 在任務協作中,關鍵問題是任務之間的通訊。握手可以通過Object的監視器方法(w
Java併發程式設計札記-(五)JUC容器-05ArrayBlockingQueue與LinkedBlockingQueue
今天來學習ArrayBlockingQueue與LinkedBlockingQueue。 ArrayBlockingQueue是一個基於陣列的有界阻塞佇列。“有界”表示陣列容量是固定的。這是一個典型的“有界快取區”,固定大小的陣列在其中保持生產者插入的元素和使
Java併發程式設計札記-(三)JUC原子類-07CAS
CAS,即compare and swap,比較並交換。CAS操作包含三個運算元:記憶體值(V),預期值(A)、新值(B)。如果記憶體值與預期值相同,就將記憶體值修改為新值,否則不做任何操作。 java.util.concurrent.atomic是建立在CA
Java併發程式設計札記-(五)JUC容器-03ConcurrentHashMap
今天來學習ConcurrentHashMap在JDK1.8中的實現。相比JDK1.7,JDK1.8中ConcurrentHashMap的實現有很大的不同。 結構 先來看下JDK1.7與JDK1.8中ConcurrentHashMap結構的不同。 JDK1.
Java併發程式設計札記-(四)JUC鎖-10Semaphore簡介
一般的鎖在任意時刻只允許一個執行緒訪問一項資源,而計數訊號量允許n個任務同時訪問一項資源。我們可以將訊號量看做一個許可集,可以向執行緒分發使用資源的許可證。獲得資源前,執行緒呼叫acquire()從許可集中獲取許可。該執行緒結束後,通過release()將許可還
Java併發程式設計札記-(三)JUC原子類-05原子方式更新類的指定volatile欄位
AtomicReferenceFieldUpdater、AtomicIntegerFieldUpdater和AtomicLongFieldUpdater是基於反射的實用工具,可以提供對關聯欄位型別的訪問。例如AtomicLongFieldUpdater可以對指定
Java併發程式設計札記-(四)JUC鎖-02Lock與ReentrantLock
今天學習Lock與ReentrantLock。 Java中的鎖有兩種,synchronized與Lock。因為使用synchronized並不需要顯示地加鎖與解鎖,所以往往稱synchronized為隱式鎖,而使用Lock時則相反,所以一般稱Lock為顯示鎖。
Java併發程式設計札記-(四)JUC鎖-07讀寫鎖的升級—StampedLock
StampedLock是JDK1.8新增的一個鎖,是對讀寫鎖ReentrantReadWriteLock的改進。前面已經學習了ReentrantReadWriteLock,我們瞭解到,在共享資料很大,且讀操作遠多於寫操作的情況下,ReentrantReadWri
Java併發程式設計札記-(四)JUC鎖-09CyclicBarrier
CyclicBarrier允許一組執行緒互相等待,直到到達某個公共屏障點。如果你希望一組並行的任務在下個步驟之前相互等待,直到所有的任務都完成了下個步驟前的所有操作,才繼續向前執行,那麼CyclicBarrier很合適。 函式列表 //構造方法摘要 Cy
Java併發程式設計札記-(三)JUC原子類-06JDK1.8新增:LongAdder、DoubleAdder、LongAccumulator、DoubleAccumulator
DoubleAccumulator、LongAccumulator、DoubleAdder、LongAdder是JDK1.8新增的部分,是對AtomicLong等類的改進。比如LongAccumulator與LongAdder在高併發環境下比AtomicLong
Java併發程式設計(二)多執行緒四種實現方式
Java實現多執行緒的方式 Java實現多執行緒的方式有4種: 繼承Thread方法、實現Runnable介面、實現Callable介面並通過FutureTask建立執行緒、使用ExecutorService。 其中,前兩種執行緒執行結果沒有返回值,後兩種是有返回值的。 1、繼承Th
java併發程式設計(二)多個執行緒多個鎖
多個執行緒多個鎖 多個執行緒多個鎖:多個執行緒,每個執行緒都可以拿到自己制定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。就是在上次那個部落格上說道的鎖競爭的問題,是因為所有的執行緒過來以後都爭搶同一個鎖。如果說每個執行緒都可以或得到自己的鎖,這樣的話我們的鎖競爭問題就沒有了
Java併發程式設計(二)——Java併發底層實現原理
Java程式碼會被編譯後變成Java位元組碼,位元組碼會被類載入器載入到JVM中,JVM執行位元組碼,最終轉化成彙編指令在CPU上執行,Java中所使用的併發機制依賴於JVM的實現和CPU的指令。 volatile 在多執行緒併發程式設計中,synchronized和volatile
學習筆記 --- Java 併發程式設計總結二 ThreadLocal
ThreadLocal是什麼 ThreadLocal是一個本地執行緒副本變數工具類。主要用於將私有執行緒和該執行緒存放的副本物件做一個對映,各個執行緒之間的變數互不干擾,在高併發場景下,可以實現無狀態的呼叫,特別適用於各個執行緒依賴不通的變數值完成操作的場景。 下圖為Threa
Java併發程式設計(二)多執行緒程式設計
在上一節,我們介紹了程序與執行緒的概念,接下來介紹如何使用多執行緒(暫不介紹多程序)。 2. Thread物件 每個執行緒都對應一個Thread例項,存在兩種策略使用Thread類來建立併發程式。 直接進行執行緒的建立和管理,也就是當需要開啟一個非同
Java併發程式設計札記-(一)基礎-01基本概念
在學習Java併發程式設計之前,先來了解一下幾個概念。 什麼是併發?維基百科中這樣介紹: 在電腦科學中,併發性是指程式,演算法或問題的不同部分或單元按無序或部分順序執行而不影響最終結果的能力。這允許並行單元的並行執行,這可以顯著提高在多處理器和多核系統