<內容介紹>
高洪岩所著的《Java併發編程(核心方法與框架)/Java核心技術系列》,作者撰寫,全程案例式講解,全面介紹Java併發包相關的技術。以淺白的措辭,結合大量實例模擬實際應用場景,全面解析Java併發包中的核心類、API與併發框架的使用。
全書共10章。第1章講解了線程間的同步性,以及線程間的傳輸數據控制,即Semaphore和Exchanger類的使用。第2章介紹了在同步處理上更加靈活的工具類CountDownLatch和CyclicBarrier,詳細到每個類的API的具體使用與應用場景。第3章是第2章的升級,由於CountDownLatch和CyclicBarrier類都有相應的弊端,所以在JDK1.7中新增加了Phaser類來解決這些缺點,該類是熟練掌握JDK併發包的必要知識點。第4章是讀者應重點掌握的Executor接口與ThreadPoolExecutor線程池,能有效地提高程序運行效率,更好地統籌線程執行的相關任務。第5章講解Future和Callable的使用,解決線程需要返回值的情況。第6章介紹Java併發包中的CompletionService的使用,因為可以以異步的方式獲得任務執行的結果,所以該接口可以增強程序運行效率。第7章介紹接口ExecutorService,該接口提供了若乾工具方法來方便執行併發業務。第8章主要介紹ScheduledExecutorService的使用,以掌握如何將計劃任務與線程池結合使用。第9章主要介紹Fork-Join分治編程,以提升多核CPU的優勢,加快程序運行效率。第10章主要介紹併發集合框架,利用好併發框架,事半功倍。
<章節目錄>
前言
第1章 Semaphore和Exchanger的使用
1.1 Semaphore的使用
1.1.1 類Semaphore的同步性
1.1.2 類Semaphore構造方法permits參數作用
1.1.3 方法acquire(int permits)參數作用及動態添加permits許可數量
1.1.4 方法acquireUninterruptibly()的使用
1.1.5 方法availablePermits()和drainPermits()
1.1.6 方法getQueueLength()和hasQueuedThreads()
1.1.7 公平與非公平信號量的測試
1.1.8 方法tryAcquire()的使用
1.1.9 方法tryAcquire(int permits)的使用
1.1.10 方法tryAcquire(long timeout, TimeUnit unit)的使用
1.1.11 方法tryAcquire(int permits, long timeout, TimeUnit unit)的使用
1.1.12 多進路-多處理-多出路實驗
1.1.13 多進路-單處理-多出路實驗
1.1.14 使用Semaphore創建字符串池
1.1.15 使用Semaphore實現多生產者/多消費者模式
1.2 Exchanger的使用
1.2.1 方法exchange()阻塞的特性
1.2.2 方法exchange()傳遞數據
1.2.3 方法exchange(V x, long timeout, TimeUnit unit)與超時
1.3 本章總結
第2章 CountDownLatch和CyclicBarrier的使用
2.1 CountDownLatch的使用
2.1.1 初步使用
2.1.2 裁判在等全部的運動員到來
2.1.3 各就各位準備比賽
2.1.4 完整的比賽流程
2.1.5 方法await(long timeout, TimeUnit unit)
2.1.6 方法getCount()的使用
2.2 CyclicBarrier的使用
2.2.1 初步使用
2.2.2 驗證屏障重置性及getNumberWaiting()方法的使用
2.2.3 用CyclicBarrier類實現階段跑步比賽
2.2.4 方法isBroken()的使用
2.2.5 方法await(long timeout, TimeUnit unit)超時出現異常的測試
2.2.6 方法getNumberWaiting()和getParties()
2.2.7 方法reset()
2.3 本章總結
第3章 Phaser的使用
3.1 Phaser的使用
3.2 類Phaser的arriveAndAwaitAdvance()方法測試1
3.3 類Phaser的arriveAndAwaitAdvance()方法測試2
3.4 類Phaser的arriveAndDeregister()方法測試
3.5 類Phaser的getPhase()和onAdvance()方法測試
3.6 類Phaser的getRegisteredParties()方法和register()測試
3.7 類Phaser的bulkRegister()方法測試
3.8 類Phaser的getArrivedParties()和getUnarrivedParties()方法測試
3.9 類Phaser的arrive()方法測試1
……
第4章 Executor與ThreadPoolExecutor的使用
第5章 Future和Callable的使用
第6章 CompletionService的使用
第7章 接口ExecutorService的方法使用
第8章 計劃任務ScheduledExecutorService的使用
第9章 Fork-Join分治編程
第10章 併發集合框架