前言
並發編程可選擇的方式有多進程、多線程和多協程。
對於Java來說,它既不像C++那樣,在運行中調用Linux的系統API去「fork」出多個進程;也不像Go那樣,在語言層面原生提供多協程。在Java中,並發就是多線程模式。
在JDK1.5發布之前,Java只在語言級別上提供一些簡單的線程互斥與同步機制,也就是synchronized關鍵字、wait與notify。如果遇到複雜的多線程編程場景,就需要開發者基於這些簡單的機制解決複雜的線程同步問題。而從JDK 1.5開始,並發編程大師Doug Lea奉上了一個系統而全面的並發編程框架——JDK Concurrent包,裡面包含了各種原子操作、線程安全的容器、線程池和異步編程等內容。
本書基於JDK 7和JDK 8,對整個Concurrent包進行全面的源碼剖析。JDK 8中大部分並發功能的實現和JDK 7一樣,但新增了一些額外特性。例如CompletableFuture、ConcurrentHashMap的新實現、StampedLock、LongAdder等。
目錄展示
內容
多線程基礎
這本384頁篇幅的《Java並發實現原理:JDK源碼剖析》,轉發+評論,關注我私信回復「666」即可免費獲取
Atomic類從本章開始,我們將從簡單到複雜,從底層到上層,一步步剖析整個Concurrent 包的層次體系,如圖所示。
Lock與Condition
同步工具類除了鎖與Condition, Concurrent 包還提供了-系列同步工具類。這些同步工具類的原理,有些也是基於AQS的,有些則需要特殊的實現機制,這一章將對所有同步工具類的實現原理進行剖析。
並發容器在Lock和Phaser的實現中,已經介紹了基於CAS實現的無鎖隊列和無鎖棧。本章將全面介紹Concurrent包提供的各種並發容器。
線程池與Future線程池的實現原理、類繼承體系、核心數據結構、線程池的優雅關閉、任務的執行過程分析、線程池的4種拒絕策略
ForkJoinPoolForkJoinPool用法-------算法
Completabl eFuture從JDK 8開始,在Concurrent包中提供了一個強大的異步編程工具Compl etableFuture.在JDK8之 前,異步編程可以通過線程池和Future來實現,但功能還不夠強大。Complet abl eFuture的出現,使Java的異步編程能力向前邁進了一大步。
在探討CompletableFut ure的原理之前,先詳細看一下Compl etableFuture的用法,從這些用法中,可以看到相較之前的Fu ture有哪些能力得到了提升。
全書共384頁的篇幅,到這裡已經把所有章節展示出來了,由於文案原因是以圖片的形式為大家展示,大家有不同的講解歡迎討論區留言
最後
多線程和並發是我們每一個碼農或多或少都必須要掌握的知識點之一,這本384頁篇幅的《Java並發實現原理:JDK源碼剖析》從線程的基礎一步步帶你深入的了解多線程、並發,如果你想深入學習那這份文檔很適合你,由於篇幅限制就只能這樣展示出來了,需要的朋友幫忙評論+轉發,關注我之後直接私信【666】即可免費獲取!