前言
一、第一部分 go并發(fā)編程基礎
什么是線程&協程。
什么是并發(fā)&并行
并發(fā)編程難在哪里
數據競爭的存在
操作的原子性
內存訪問同步
死鎖
什么是死鎖
如何避免線程死鎖
指令重排序
偽共享
什么是偽共享
如何產生的
怎么避免
鎖的概述
樂觀鎖&悲觀鎖
公平鎖&非公平鎖
獨占鎖&共享鎖
可重入鎖&自旋鎖
go線程模型
二、第二部分 go并發(fā)編程高級篇
go內存模型
三、第三部分 go并發(fā)編程實戰(zhàn)
從各種框架中看如何使用并發(fā)庫來解決問題的。
名稱:深度剖析Java多線程核心技術
小冊內容
一、Java多線程并發(fā)編程基礎
1.1 什么是線程?
1.2 線程之間的基礎同步設施
1.3 線程的虛假喚醒問題
1.4 被中斷的線程,狀態(tài)發(fā)生了什么變化
1.5 線程死鎖以及如何規(guī)避
1.6 Dameon線程與User線程
1.7 并發(fā)與并行本質區(qū)別是什么
1.8 什么是線程安全問題
1.9 共享變量的可見性問題
1.10 關鍵字Volatile與Synchronized的內存語義是什么
1.11 什么是指令重排序
1.11 什么是偽共享?cpu cache為何會造成偽共享的存在
二、Java多線程并發(fā)編程核心技術
2.1 AtomicLong如何使用CAS來實現的
2.2 LongAdder是如何通過分而治之來避免AtomicLong的性能問題的?
2.3 ThreadLocal內部是如何實現的
2.4 InheritableThreadLocal如何解決了ThreadLocal的缺點
2.5 ThreadLocalRandom是如何借鑒ThreadLocal的思想解決Random的性能問題
2.6 CopyOnWriteArrayList是如何基于寫時拷貝實現線程安全的
2.6 AQS抽象同步隊列-鎖的基礎組件
2.7 獨占鎖ReentrantLock的實現原理
2.8 讀寫鎖ReentrantReadWriteLock的實現原理
2.9 JDK8新增的StampedLock的實現原理
2.10 如何使用join方法來實現線程同步
2.11 如何使用CountDownLatch來實現線程同步
2.12 如何使用CyclicBarrier來實現線程同步
2.13 如何使用Semaphore來實現線程同步
三、Java多線程并發(fā)編程實踐
3.1 盡量不要new線程,要用線程池
3.2 創(chuàng)建線程和線程池時候要帶自定義名稱
3.3 線程池使用完畢后要記得關閉
3.4 線程池使用時候要注意拒絕策略和線程池隊列
3.5 線程的run方法內不要拋出異常
3.6 ThreadLocal使用不當會導致內存泄露
3.7 SimpleDateFormat是線程不安全的
3.8 正確姿勢使用ConcurrentHashMap
3.9 小心使用ArrayList的subList方法
3.10 復用POJO類元素有時候需要深拷貝
小冊介紹
如果說編寫正確的程序很難,那么編寫正確的并發(fā)程序更是難上加難,java多線程并發(fā)編程相比Java技術棧中的其他知識點的學習門檻較高,從而導致很多人望而卻步。但無論是職場面試,
還是高并發(fā)/ 高流量系統的實現,卻都離不開并發(fā)編程,于是能夠真正掌握并發(fā)編程的人成為了市場迫切需求的人才。
本小冊將通過圖文結合、通俗易懂的講解方式幫助大家完成多線程并發(fā)編程從入門到實踐的飛躍!
本小冊分為三部分,第一部分為Java 多線程并發(fā)編程基礎篇,萬層高樓始于磚瓦,這部分主要講解Java多線程并發(fā)編程的基礎知識,掌握了本篇的內容,就為學習第二部分Java多線程核心技術奠定了基礎;第二部分為Java 多線程并發(fā)編程核心部分,講解了Java 并發(fā)包中核心組件的實現原理,讓讀者知其然,也知其所以然,熟練掌握本篇內容,對我們在日常開發(fā)高并發(fā)、高流量的系統時會大有裨益;第三部分為Java 多線程并發(fā)編程實踐篇,
主要講解在并發(fā)編程實踐中可能會遇到的問題以及解決方法。
適宜人群
有 Java 基礎,渴望深度掌握 Java多線程核心技術原理而不僅限于只會使用的中高級后端開發(fā)者;
渴望成功打入大型互聯網企業(yè)研發(fā)部的中高級后端開發(fā)者;
對 Java并發(fā)編程技術 技術好奇的中高級技術朋友們;
作者介紹
追夢,某大型互聯網公司資深Java開發(fā)工程師,并發(fā)編程網編輯;熱衷并發(fā)編程,微服務架構設計,中間件基礎設施