原创 Disruptor併發框架使用一

   一、Disruptor併發框架簡介    能夠以很低的延遲,產生大量的交易,建立在JVM平臺上,核心是一個業務邏輯的處理器,它能夠在一個線程裏每秒處理六百萬訂單。業務邏輯處理器是完全運行在內存中,使用事件源驅動方式。能

原创 多線程通信 wait和notify

一、概念   線程是操作系統中獨立的個體,這些線程如果不通過特殊的手段進行處理,就無法組成一個完整的整體。因此線程通信就稱爲組成一個整體的必須條件之一。當線程之間存在通信,那麼系統之間的交互就會更加強大。在提高CPU使用率

原创 ReentrantReadWriteLock_讀寫鎖

   讀寫鎖的核心是實現讀與寫的分離,在高併發的情況下,尤其是讀多寫少的情況下,性能要遠高於重入鎖.對於Synchronize,ReentrantLock時,同一個時間內,只能由一個線程進行訪問被鎖定的代碼,而讀寫鎖則不同,其本

原创 重入鎖和讀寫鎖

   在java多線程中,我們知道可以用synchronize關鍵字來實現線程間的同步互斥工作,還有更加優秀的機制去實現同步互斥工作,Lock對象。重入鎖和讀寫鎖,他們具有比synchronize更加強大的功能,並且具有嗅探鎖定

原创 單例在多線程中保證線程安全

   在多線程模式中,考慮到性能和線程安全問題,一般選擇兩種比較經典的單例模式,既能提高性能,也能保證線程安全 1、double check instance 雙重檢查鎖定    原理參考鏈接:雙重檢查鎖定原理鏈接 p

原创 線程池的使用及其拒絕策略

一、Executor框架提供的線程池(參考JDK6—API) 二、JDK提供自定義線程池(參考JDK6—API) 三、JDK提供自定義線程池詳細說明(參考JDK6—API) 三、自定義拒絕策略   在

原创 ThreadLocal保證線程安全

一、概念   線程局部變量,是一種多線程併發訪問變量的解決方案。與synchronized等加鎖的方式不同,ThreadLocal完全不提供鎖。而使用以空間換時間的手段,爲每個線程提供變量的副本,以保證線程安全。   從性

原创 volatile關鍵字 線程可見性

一、概念   在java中,每一個線程都會有自己的工作內存區域,在主內存中對共享變量值進行拷貝,形成副本,放在每個線程獨自的內存區域。當各自的線程運行時,會在自己的內存區域操作這些變量的值,爲了存取一個共享的變量,一個線程

原创 用wait/notify 模擬Queue

一、BlockingQueue支持阻塞隊列    此例子主要是模擬LinkBlockingQueue中put和take方法 public class SimulationQueue { // 1 裝載元素的容器

原创 Semaphore信號量應用

一、Semaphore(詳見JDK-API)   一個計數信號量。從概念上講,信號量維護了一個許可集。如有必要,在許可可用前會阻塞每一個 acquire(),然後再獲取該許可。每個 release() 添加一個許可,從而可

原创 多線程設計模式之Future、Master-Worker和生產者-消費者模型

  並行設計模式屬於設計優化的一部分,它是對一些常用的多線程結構的總結和抽象。與串行程序相比,並行程序的結構通常更爲複雜。因此合理的使用並行模式在開發中更有意義,目前在開發中應用最多的是Future,Master-Woker和生

原创 Concurrent和CopyOnWrite容器

一、ConcurrentMap容器   concurrentMap接口下面有兩個重要實現:   ConcurrentHashMap   ConcurrentSkipListMap(支持併發排序功能,彌補Concurrent

原创 java8和ThreadLocal解決時間格式的線程安全問題

一、傳統時間,日期,日期格式是變化的,多線程訪問下都是線程不安全的,解決此不安全問題實例如下 public class DateFormateThreadLocal {    private static final

原创 ConcurrentLinkQueue和BlockingQueue

  在併發隊列上,JDK提供了兩種實現,一個是以ConcurrentLinkQueue爲代表的高性能的隊列,一個是以BlockingQueue接口爲代表的阻塞隊列,無論哪種都繼承自Queue 一、ConcurrentLink

原创 CyclicBarrier和CountDownLatch的使用

一、CyclicBarrier(JDK-API)   一個同步輔助類,它允許一組線程互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的線程的程序中,這些線程必須不時地互相等