原创 JAVA併發編程梳理與學習一(線程基礎概念解讀)

引言:編程3年多了,感到自己知識體系零散,把自己知識體系梳理和學習一下。歡迎大家提意見,共同學習。 併發編程知識體系:線程基礎概念解讀、線程之間的共享和協作、線程併發工具類、原子操作CAS、顯示鎖和AQS、併發容器、線程池、併發安

原创 JAVA併發編程梳理與學習二(線程之間的共享和協作)

一、線程間的共享 synchronized (底層原理分析jvm時會說到)內置鎖 Java 支持多個線程同時訪問一個對象或者對象的成員變量,關鍵字 synchronized 可以修飾方法或者以同步塊的形式來進行使用,它主要確保多個

原创 HashMap分析(1.8爲主)

一、爲什麼要用HashMap 1.順序表(數組、ArrayList):一片物理上連續的大小確定的存儲空間,可以快速定位,查找方便,做刪除和新增慢(增加和刪除要大量移動元素) 2.鏈表:空間上不連續,邏輯上連續,刪除和新增快,查找慢

原创 JAVA併發編程梳理與學習七(AQS)

一、AQS(AbstractQueuedSynchronizer)定義及作用 同步隊列器,可以用來構建鎖或者其他同步組件,它使用volatitle定義了一個int型的同步變量表示同步狀態,通過內置的FIFO隊列來完成競爭資源線程的

原创 JAVA併發編程梳理與學習六(Lock和Condition 接口)

一、Lock 被稱爲顯示鎖。既然已經有synchronized爲什麼還要定義Lock呢?使用過synchronized關鍵字獲取鎖的都知道,synchronized獲取鎖和釋放鎖太死板,有以下缺點。 一旦一個線程用synchron

原创 JAVA併發編程梳理與學習五(原子操作CAS)

原子操作 1.什麼是原子操作? 一個操作一旦開啓就不會被打斷,一直到操作完成。類似於事務,要麼不執行,要執行就執行完,再去執行別的任務。 2.如何實現原子操作 (1)加鎖。synchronized關鍵字是基於阻塞的鎖機制,是一種悲

原创 JAVA併發編程梳理與學習三(ForkJoin)

一、ForkJoin說明 ForkJoin是jdk1.7增加的併發工具類,可以解決分而治之的問題,就是把一個任務分爲若干小任務,併發的去處理,最後再把處理結果合併起來,從而達到提高速度的目的。使用時要保證每個小任務互不干擾、相互獨

原创 JAVA併發編程梳理與學習四(CountDownLatch和CyclicBarrier)

一、CountDownLatch 1.閉鎖。CountDownLatch可以等其他線程完成一些工作後再執行。例如,應用主線程再等框架裏面的其他線程加載完一些東西后,再執行就可以使用CountDownLatch 2.CountDow

原创 JAVA併發編程梳理與學習--入門(線程之間的共享和協作)二

一、線程間的共享 synchronized (底層原理分析jvm時會說到)內置鎖 Java 支持多個線程同時訪問一個對象或者對象的成員變量,關鍵字 synchronized 可以修飾方法或者以同步塊的形式來進行使用,它主要確保多個

原创 JAVA併發編程梳理與學習--入門(線程基礎概念解讀)一

引言:編程3年多了,感到自己知識體系零散,把自己知識體系梳理和學習一下,每個體系都由入門–》初步應用–》高階–》源碼分析組成。歡迎大家提意見,共同學習。 併發編程知識體系:線程基礎概念解讀、線程之間的共享和協作、線程併發工具類、原