第一部分  Java 並發編程基礎篇
         第1 章  並發編程綫程基礎  2
         1.1  什麼是綫程  2
         1.2  綫程創建與運行  3
         1.3  綫程通知與等待  6
         1.4  等待綫程執行終止的join 方法  16
         1.5  讓綫程睡眠的sleep 方法  19
         1.6  讓齣CPU 執行權的yield 方法  23
         1.7  綫程中斷  24
         1.8  理解綫程上下文切換  30
         1.9  綫程死鎖  30
         1.9.1  什麼是綫程死鎖  30
         1.9.2  如何避免綫程死鎖  33
         1.10  守護綫程與用戶綫程  35
         1.11  ThreadLocal  39
         1.11.1  ThreadLocal 使用示例  40
         1.11.2  ThreadLocal 的實現原理  42
         1.11.3  ThreadLocal 不支持繼承性  45
         1.11.4  InheritableThreadLocal 類  46
         第2 章  並發編程的其他基礎知識  50
         2.1  什麼是多綫程並發編程  50
         2.2  為什麼要進行多綫程並發編程  51
         2.3  Java 中的綫程安全問題  51
         2.4  Java 中共享變量的內存可見性問題  52
         2.5  Java 中的synchronized 關鍵字  54
         2.5.1  synchronized 關鍵字介紹  54
         2.5.2  synchronized 的內存語義  55
         2.6  Java 中的volatile 關鍵字  55
         2.7  Java 中的原子性操作  57
         2.8  Java 中的CAS 操作  59
         2.9  Unsafe 類  59
         2.9.1  Unsafe 類中的重要方法  59
         2.9.2  如何使用Unsafe 類  61
         2.10  Java 指令重排序  65
         2.11  僞共享  67
         2.11.1  什麼是僞共享  67
         2.11.2  為何會齣現僞共享  68
         2.11.3  如何避免僞共享  70
         2.11.4  小結  72
         2.12  鎖的概述  72
         2.12.1  樂觀鎖與悲觀鎖  72
         2.12.2  公平鎖與非公平鎖  75
         2.12.3  獨占鎖與共享鎖  75
         2.12.4  什麼是可重入鎖  76
         2.12.5  自鏇鎖  77
         2.13  總結  77
         第二部分  Java 並發編程高級篇
         第3 章  Java 並發包中ThreadLocalRandom 類原理剖析  80
         3.1  Random 類及其局限性  80
         3.2  ThreadLocalRandom  82
         3.3  源碼分析  84
         3.4  總結  87
         第4 章  Java 並發包中原子操作類原理剖析  88
         4.1  原子變量操作類  88
         4.2  JDK 8 新增的原子操作類LongAdder  93
         4.2.1  LongAdder 簡單介紹  93
         4.2.2  LongAdder 代碼分析  95
         4.2.3  小結  101
         4.3  LongAccumulator 類原理探究  102
         4.4  總結  104
         第5 章  Java 並發包中並發List 源碼剖析  105
         5.1  介紹  105
         5.2  主要方法源碼解析  106
         5.2.1  初始化  106
         5.2.2  添加元素  106
         5.2.3  獲取指定位置元素  108
         5.2.4  修改指定元素  109
         5.2.5  刪除元素  110
         5.2.6  弱一緻性的迭代器  111
         5.3  總結  114
         第6 章  Java 並發包中鎖原理剖析  115
         6.1  LockSupport 工具類  115
         6.2  抽象同步隊列AQS 概述  122
         6.2.1  AQS——鎖的底層支持  122
         6.2.2  AQS——條件變量的支持  128
         6.2.3  基於AQS 實現自定義同步器  131
         6.3  獨占鎖ReentrantLock 的原理  136
         6.3.1  類圖結構  136
         6.3.2  獲取鎖  137
         6.3.3  釋放鎖  142
         6.3.4  案例介紹  143
         6.3.5  小結  145
         6.4  讀寫鎖ReentrantReadWriteLock 的原理  145
         6.4.1  類圖結構  145
         6.4.2  寫鎖的獲取與釋放  147
         6.4.3  讀鎖的獲取與釋放  151
         6.4.4  案例介紹  156
         6.4.5  小結  158
         6.5  JDK 8 中新增的StampedLock 鎖探究  158
         6.5.1  概述  158
         6.5.2  案例介紹  160
         6.5.3  小結  164
         第7 章  Java 並發包中並發隊列原理剖析  165
         7.1  ConcurrentLinkedQueue 原理探究  165
         7.1.1  類圖結構  165
         7.1.2  ConcurrentLinkedQueue 原理介紹  166
         7.1.3  小結  181
         7.2  LinkedBlockingQueue 原理探究  182
         7.2.1  類圖結構  182
         7.2.2  LinkedBlockingQueue 原理介紹  185
         7.2.3  小結  194
         7.3  ArrayBlockingQueue 原理探究  195
         7.3.1  類圖結構  195
         7.3.2  ArrayBlockingQueue 原理介紹  197
         7.3.3  小結  202
         7.4  PriorityBlockingQueue 原理探究  203
         7.4.1  介紹  203
         7.4.2  PriorityBlockingQueue 類圖結構  203
         7.4.3  原理介紹  205
         7.4.4  案例介紹  214
         7.4.5  小結  216
         7.5  DelayQueue 原理探究  217
         7.5.1  DelayQueue 類圖結構  217
         7.5.2  主要函數原理講解  219
         7.5.3  案例介紹  222
         7.5.4  小結  224
         第8 章  Java 並發包中綫程池ThreadPoolExecutor 原理探究  225
         8.1  介紹  225
         8.2  類圖介紹  225
         8.3  源碼分析  230
         8.3.1  public void execute(Runnable command)  230
         8.3.2  工作綫程Worker 的執行  235
         8.3.3  shutdown 操作  238
         8.3.4  shutdownNow 操作  240
         8.3.5  awaitTermination 操作  241
         8.4  總結  242
         第9 章  Java 並發包中ScheduledThreadPoolExecutor 原理探究  243
         9.1  介紹  243
         9.2  類圖介紹  243
         9.3  原理剖析  245
         9.3.1  schedule(Runnable command, long delay,TimeUnit unit) 方法  246
         9.3.2  scheduleWithFixedDelay(Runnable command,long initialDelay, long delay,TimeUnit unit) 方法  252
         9.3.3  scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit) 方法  254
         9.4  總結  255
         第10 章  Java 並發包中綫程同步器原理剖析  256
         10.1  CountDownLatch 原理剖析  256
         10.1.1  案例介紹  256
         10.1.2  實現原理探究  259
         10.1.3  小結  263
         10.2  迴環屏障CyclicBarrier 原理探究  264
         10.2.1  案例介紹  264
         10.2.2  實現原理探究  268
         10.2.3  小結  272
         10.3  信號量Semaphore 原理探究  272
         10.3.1  案例介紹  272
         10.3.2  實現原理探究  276
         10.3.3  小結  281
         10.4  總結  281
         第三部分  Java 並發編程實踐篇
         第11 章  並發編程實踐  284
         11.1  ArrayBlockingQueue 的使用  284
         11.1.1  異步日誌打印模型概述  284
         11.1.2  異步日誌與具體實現  285
         11.1.3  小結  293
         11.2  Tomcat 的NioEndPoint 中ConcurrentLinkedQueue 的使用  293
         11.2.1  生産者——Acceptor 綫程  294
         11.2.2  消費者——Poller 綫程  298
         11.2.3  小結  300
         11.3  並發組件ConcurrentHashMap 使用注意事項  300
         11.4  SimpleDateFormat 是綫程不安全的  304
         11.4.1  問題復現  304
         11.4.2  問題分析  305
         11.4.3  小結  309
         11.5  使用Timer 時需要注意的事情  309
         11.5.1  問題的産生  309
         11.5.2  Timer 實現原理分析  310
         11.5.3  小結  313
         11.6  對需要復用但是會被下遊修改的參數要進行深復製  314
         11.6.1  問題的産生  314
         11.6.2  問題分析  316
         11.6.3  小結  318
         11.7  創建綫程和綫程池時要指定與業務相關的名稱  319
         11.7.1  創建綫程需要有綫程名  319
         11.7.2  創建綫程池時也需要指定綫程池的名稱  321
         11.7.3  小結  325
         11.8  使用綫程池的情況下當程序結束時記得調用shutdown 關閉綫程池  325
         11.8.1  問題復現  325
         11.8.2  問題分析  327
         11.8.3  小結  329
         11.9  綫程池使用FutureTask 時需要注意的事情  329
         11.9.1  問題復現  329
         11.9.2  問題分析  332
         11.9.3  小結  335
         11.10  使用ThreadLocal 不當可能會導緻內存泄漏  336
         11.10.1  為何會齣現內存泄漏  336
         11.10.2  在綫程池中使用ThreadLocal 導緻的內存泄漏  339
         11.10.3  在Tomcat 的Servlet 中使用ThreadLocal 導緻內存泄漏  341
         11.10.4  小結  344
         11.11  總結  344
      · · · · · ·     (
收起)