《Java多執行緒程式設計實戰》—— 第11~14章
第11章 Serial Thread Confinement(序列執行緒封閉)模式
將多個併發的任務存入佇列實現任務的序列化。唯一的工作者執行緒。
避免加鎖。本質是使用一個開銷更小的鎖替換一個可能的開銷更大的鎖。
第12章 Master-Slave(主僕)模式
將一個任務分解為若干個語義等同的子任務,由專門的工作者執行緒來並行執行這些子任務。通過整合各個子任務的處理結果生成最後的結果。
第13章 Pipeline(流水線)模式
將一個任務分解為若干個處理階段,每個處理階段的輸出作為下一階段的輸入,並且各個處理階段都有相應的工作者執行緒去執行相應的計算。
對有依賴關係
但是Pipeline模式中各個處理階段所使用的工作者執行緒或者執行緒池、表示各個處理階段的輸入/輸出物件的建立和移動都有時間和空間開銷。因此,Pipeline模式適合處理規模較大的任務。
第14章 Half-sync/Half-async(半同步/半非同步)模式
分層架構。包含3個層次:非同步任務層、同步任務層和佇列層。
核心思想是將系統中的任務進行恰當的分解,使各個子任務落入合適的層次。
低階的任務或者耗時較短的任務可以安排在非同步任務層。
高階的任務或者耗時較長的任務可以安排在同步任務層。
兩層之間通過佇列層進行解耦:佇列層負責兩層之間的資料交換。
相關推薦
《Java多執行緒程式設計實戰》—— 第11~14章
第11章 Serial Thread Confinement(序列執行緒封閉)模式 將多個併發的任務存入佇列實現任務的序列化。唯一的工作者執行緒。 避免加鎖。本質是使用一個開銷更小的鎖替換一個可能的開銷更大的鎖。 第12章 Master-Slave(主僕)模式 將一個任務分解為若
《Java多執行緒程式設計實戰》—— 第9章 Thread Pool(執行緒池)模式
一個系統中的執行緒相對於其所要處理的任務而言,是一種非常有限的資源。執行緒不僅在執行任務時需要消耗CPU時間和記憶體等資源,執行緒物件(Thread例項)本身以及執行緒所需的呼叫棧(Call Stack)也佔用記憶體,並且Java中建立一個執行緒往往意味著JVM會建立相應的依賴於宿主機作業系
《Java多執行緒程式設計實戰》—— 第8章 Active Object(主動物件)模式
Active Object模式是一種非同步程式設計模式。(跟Promise模式有什麼區別呢?) 通過對方法的呼叫與方法的執行進行解耦來提高併發性。 類圖 當Active Object模式對外暴露的非同步方法被呼叫時,與該方法呼叫相關的上下文資訊,包括被呼叫的非同步方法名、引數等,會被
《Java多執行緒程式設計實戰》——第七章Producer-Consumer(生產者/消費者)模式
Producer-Consumer模式的核心是通過通道對資料(或任務)的生產者和消費者進行解耦,從而使二者的處理速率相對來說互不影響。 類圖 BlockingQueueChannel: 當佇列滿時,將當前執行緒掛起直到佇列非滿 當佇列為空時,將當前執行緒掛起直到佇列
《Java多執行緒程式設計實戰》——第6章 Promise(承諾)模式
Promise模式是一種非同步程式設計模式。 開始一個任務的執行,並得到一個用於獲取該任務執行結果的憑據物件,而不必等待該任務執行完畢就可以繼續執行其他操作。 等到需要該任務的執行結果時,再呼叫憑據物件的相關方法來獲取。 類圖 獲取執行結果時,可能由於非同步任務尚未執行完畢而阻塞。
《Java多執行緒程式設計實戰》——第5章 Two-phase Termination(兩階段終止)模式
Two-phase Termination模式通過將停止執行緒分解為準備階段和執行階段兩個階段,提供了一種通用的優雅停止執行緒的方法。 準備階段:通知目標執行緒準備進行停止。 設定標誌變數。 呼叫目標執行緒的interrupt方法。 對於能夠對interrupt方法呼
《Java多執行緒程式設計實戰》——第4章 Guarded Suspension(保護性暫掛)模式
一個執行緒等待另一個執行緒完成一定的操作,才能繼續執行。 核心思想是如果某個執行緒執行特定的操作前需要滿足一定的條件,則在該條件未滿足時將該執行緒暫停執行(waiting)。 類圖 如果頻繁出現保護方法被呼叫時保護條件不成立,那麼保護方法的執行執行緒就會頻繁地被暫掛和喚醒,而導致頻繁
《Java多執行緒程式設計實戰》——第3章 Immutable Object(不可變物件)模式
通過使用對外可見的狀態不可變的物件,無需額外的同步訪問控制。既保證了資料一致性,又避免了同步訪問控制所產生的額外開銷和問題,也簡化了程式設計。 狀態不可變的物件:物件一經建立,其對外可見的狀態就保持不變,如String和Integer。 Immutable Object模式:將現實世界中狀態
《Java多執行緒程式設計實戰》——第2章 設計模式及其作用
設計模式與三十六計 多執行緒設計模式簡介 不使用鎖的情況下保證執行緒安全 Immutable Object(不可變物件)模式 Thread Specific Storage(執行緒特有儲存)模式 Serial Thread Confinement(序列執行緒封
《Java多執行緒程式設計實戰》——第1章 Java多執行緒程式設計實戰基礎
Java執行緒: 守護執行緒——不影響JVM的正常停止,常用於執行一些重要性不太高的任務 使用者執行緒—— 建立一個Thread例項與建立其他類例項的區別: JVM為Thread例項分配兩個呼叫棧所需的儲存空間: 跟蹤Java程式碼間的呼叫關係
《Java多執行緒程式設計實戰》—— 第10章 Thread Specific Storage(執行緒特有儲存)模式
Thread Specific Storage模式:不共享變數,不使用鎖。 不同執行緒使用統一的訪問接入點可以獲取執行緒特有的例項。 弊端: 隱藏了系統結構,隱藏了應用中各個物件之間的關係,從而使應用更加難於理解。 鼓勵使用全域性物件。 常見使用場景
JAVA多執行緒程式設計實戰視訊-第三階段(共80節)
高併發程式設計第三階段01講 AtomicInteger多執行緒下測試講解 高併發程式設計第三階段02講 AtomicInteger API詳解,以及CAS演算法詳細介紹 高併發
《Java多執行緒程式設計實戰》
Java執行緒: 守護執行緒——不影響JVM的正常停止,常用於執行一些重要性不太高的任務 使用者執行緒—— 建立一個Thread例項與建立其他類例項的區別: JVM為Thread例項分配兩個呼叫棧所需的儲存空間,一個呼叫棧跟蹤Java程式碼間的呼叫關係,另一個用
《JAVA多執行緒程式設計實戰指南》之Two-phase Termination(兩階段終止)模式
本文是《JAVA多執行緒程式設計實戰指南》的樣章,感謝作者授權併發網(ifeve.com)發表此文。感謝demochen整理此文。 5.1Two-phase Termination模式簡介 停止執行緒是一個目標簡單而實現卻不那麼簡單的任務。首先,Java沒有提供直接的API用於停止執行緒。此
【新聞】本人新書《Java多執行緒程式設計實戰指南(核心篇)》已出版上市
豆瓣主頁 購買連結 試讀下載 (待補充) 原始碼下載 內容簡介 隨著現代處理器的生產工藝從提升處理器主頻頻率轉向多核化,即在一塊晶片上整合多個處理器核心(Core),多核處理器(Multicore Proc
Java多執行緒程式設計實戰指南(核心篇)讀書筆記(四)
博主準備惡補一番Java高併發程式設計相關知識,接下來將閱讀該書,並且進行比較詳細的總結,好記性不如爛筆頭,加油。Java多執行緒程式設計實戰指南(核心篇)讀書筆記(四),主要記錄該書第七章和第八章的基
【Java多執行緒程式設計核心技術】第一章(多執行緒技能suspend,resume,yield)
1.8 暫停執行緒 在多執行緒中,suspend是暫停執行緒,resume是恢復執行緒的執行. 1.8.1suspend方法和resume方法的使用 public class MyThread extends Thread { private lon
【Java多執行緒程式設計核心技術】第一章(多執行緒技能 執行緒的優先順序)
1.8 執行緒的優先順序 在作業系統中,執行緒可以劃分優先順序,優先順序較高的執行緒得到的cpu的資源較多,也就是cpu優先執行優先順序較高的執行緒物件中的任務. 在Java中,執行緒優先順序分為1~10個等級,如果小於1大於10,則JDK丟擲異常,原始碼如下:
【Java多執行緒程式設計核心技術】第二章 物件及變數的併發訪問
synchronized關鍵字 sychronized取得的鎖都是物件鎖,而不是把一段程式碼或方法(函式)當做鎖。 鎖重入功能:當一個執行緒得到一個物件鎖後,再次請求可以再次得到該物件的鎖 出現異常,鎖自動釋放 同步不具有繼承性 class Bas
【Java多執行緒程式設計核心技術】第一章 Java多執行緒技能
執行緒的啟動及常用方法 對於執行緒的啟動來說,首先涉及到的就是run()和start()這兩個方法。一種方法是繼承Thread類,覆蓋run方法;一種是實現Runnable介面。 因為開啟執行緒的start方法只在Thread類中存在,所以兩種方法都需要藉助Thread類中的st