原创 多線程5一AbstractQueuedSynchronizer源碼分析一

AQS的源碼分析 <一> 文章目錄前言1、什麼是CAS ?2、同步器類結構3、CLH同步隊列4、AQS中靜態內部類Node5、方法分析5.1、acquire(int arg )5.2、release(int arg) 釋放鎖6、

原创 多線程4-線程池執行原理淺析

文章目錄引言一、線程池工作流程圖二、線程池的運行原理三、線程池的7個參數四、常用4個阻塞隊列五、四個拒絕策略語義以及測試用例六、Executors工具類6.1. Executors提供的三種線程池6.2 實際開發中應該怎樣設定合適

原创 多線程6一CAS與自旋鎖

文章目錄1、什麼是CAS2、原子類 Atomic3、CAS的ABA問題4、ABA問題的解決方式5、利用cas實現自旋鎖6、總結 1、什麼是CAS CAS 即 compare and swap 比較並交換, 涉及到三個參數,內存值

原创 多線程1一volatile

文章目錄一、java內存模型1.1、抽象結構圖1.2、概念介紹二、volatile詳解2.1、概念2.2、保證內存可見性2.3、不保證原子性2.4、有序性 一、java內存模型 1.1、抽象結構圖 1.2、概念介紹 java

原创 多線程8一AbstractQueuedSynchronizer源碼分析二

文章目錄1、條件隊列2、ConditionObject2.1、 await() 方法2.2、signal方法3、總結 AQS的源碼分析 <二> 該篇主要分析AQS的ConditionObject,是AQS的內部類,實現等待通知機制

原创 多線程3-Java併發工具類

文章目錄一、簡介1.1、 Semaphore1.2、CountDownLatch1.3、CyclicBarrier二、信號量Semaphore2.1、構造方法2.2、主要方法2.3、示例代碼三、計數器CountDownLatch3

原创 多線程2一ThreadLocal源代碼分析

1、應用場景及作用 -1作用、ThreadLocal 爲了實現線程之間數據隔離,每個線程中有獨立的變量副本,操作互不干擾。 區別於線程同步中,同步在爲了保證正確使用同一個共享變量,需要加鎖。 -2應用場景: 1)可以對一

原创 多線程7一ReentrantReadWriteLock源碼分析

文章目錄前言1、讀寫鎖的一些概念2、類結構和構造方法3、寫鎖3.1、嘗試獲取鎖3.2、釋放寫鎖4、讀鎖4.1、獲取讀鎖4.2、釋放讀鎖5、思考6、總結 前言 在多線程環境下,爲了保證線程安全, 我們通常會對共享資源加鎖操作,我們常