課程簡介
在互聯(lián)網(wǎng)+的今天,人們?cè)赑C、手機(jī)、Pad 上安裝了各式各樣的軟件服務(wù)或APP,享受著互聯(lián)網(wǎng)技術(shù)帶來的高效和便捷。隨著這些產(chǎn)品的高速發(fā)展,大家對(duì)高性能、穩(wěn)定性、安全性、擴(kuò)展性等方面有了更高的要求,而誕生于20多年前的Java平臺(tái),一直緊跟時(shí)代脈搏,兼收并蓄,持續(xù)優(yōu)化,在編程領(lǐng)域交出最滿意的答卷,最終成為現(xiàn)代互聯(lián)網(wǎng)服務(wù)端開發(fā)的王者。對(duì)于任何服務(wù)端語言來說,并發(fā)機(jī)制都是直接影響性能的最關(guān)鍵因素,而本次課程,我們將主要聚焦于Java中最核心,也是最有難度的內(nèi)容:多線程并發(fā)編程。Java是天然多線程模型,但是用好它卻極為不易。Java并發(fā)包(新)從JDK5發(fā)布,一直到JDK8 Lambda、函數(shù)式編程的應(yīng)用,大家在并發(fā)編程時(shí)所遵循的底層模式仍未有太大變化,只要我們能清晰掌握其中核心知識(shí)點(diǎn),無論是任何編程范式,都能運(yùn)用自如。本次課程會(huì)先從多線程編程基礎(chǔ)開始講起,然后針對(duì)線程安全、鎖機(jī)制做較為全面的解讀。同時(shí),我們通過對(duì)并發(fā)包常見API的實(shí)戰(zhàn)性講解,讓大家能完全掌握如何編寫一款健壯且安全的多線程并發(fā)應(yīng)用,這里面涉及到的內(nèi)容有常見線程池及參數(shù)配置、線程池調(diào)優(yōu)、常見API如ReentranLock、Condition、CountDownLatch的應(yīng)用等。最后,我們會(huì)了解如何靈活運(yùn)用Future、CompletableFuture等API編寫符合業(yè)務(wù)需要的異步處理功能。
目標(biāo)收益
即將上線
培訓(xùn)對(duì)象
課程大綱
引子 | 詳細(xì)介紹Java并發(fā)編程涉及到的所有重難知識(shí)點(diǎn) |
第一單元 Java并發(fā)編程基礎(chǔ) |
1. 多線程基礎(chǔ) 1.1. 多線程基礎(chǔ)介紹 1.2. 線程創(chuàng)建之Thread/Runnable 1.3. 線程狀態(tài)及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2. 線程安全 2.1 線程安全問題的本因 (案例:如何避免編寫一個(gè)不安全的業(yè)務(wù)邏輯?) 2.2 Synchronized關(guān)鍵字詳解 2.3 線程間數(shù)據(jù)隔離之ThreadLocal (案例:調(diào)用鏈跟蹤系統(tǒng)是如何使用ThreadLocal的) 3. 線程間通信 3.1 了解wait、notify 3.2 生產(chǎn)者-消費(fèi)者模式(案例:隊(duì)列緩沖在任務(wù)處理中的應(yīng)用) |
第二單元 Java線程池 |
4. 線程池基礎(chǔ) 4.1 線程池概要 4.2 線程池基本原理 4.3 線程池類型 4.3.1 newFixedThreadPool(int nThreads) 4.3.2 newSingleThreadExecutor() 4.3.3 newCachedThreadPool() 4.4 線程池實(shí)戰(zhàn)演練(案例:線程池在服務(wù)端處理時(shí)的選型、調(diào)優(yōu)及注意事項(xiàng)) |
第三單元 異步與函數(shù)式編程 |
5. 異步編程 5.1 為什么需要異步? 5.2 Java對(duì)異步編程的支持 5.3 使用Future編寫異步功能 5.4 Future的增強(qiáng)版:CompletableFuture 5.5 組合式CompletableFuture 5.6 結(jié)合Stream(案例:整合異步計(jì)算結(jié)果) |
引子 詳細(xì)介紹Java并發(fā)編程涉及到的所有重難知識(shí)點(diǎn) |
第一單元 Java并發(fā)編程基礎(chǔ) 1. 多線程基礎(chǔ) 1.1. 多線程基礎(chǔ)介紹 1.2. 線程創(chuàng)建之Thread/Runnable 1.3. 線程狀態(tài)及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2. 線程安全 2.1 線程安全問題的本因 (案例:如何避免編寫一個(gè)不安全的業(yè)務(wù)邏輯?) 2.2 Synchronized關(guān)鍵字詳解 2.3 線程間數(shù)據(jù)隔離之ThreadLocal (案例:調(diào)用鏈跟蹤系統(tǒng)是如何使用ThreadLocal的) 3. 線程間通信 3.1 了解wait、notify 3.2 生產(chǎn)者-消費(fèi)者模式(案例:隊(duì)列緩沖在任務(wù)處理中的應(yīng)用) |
第二單元 Java線程池 4. 線程池基礎(chǔ) 4.1 線程池概要 4.2 線程池基本原理 4.3 線程池類型 4.3.1 newFixedThreadPool(int nThreads) 4.3.2 newSingleThreadExecutor() 4.3.3 newCachedThreadPool() 4.4 線程池實(shí)戰(zhàn)演練(案例:線程池在服務(wù)端處理時(shí)的選型、調(diào)優(yōu)及注意事項(xiàng)) |
第三單元 異步與函數(shù)式編程 5. 異步編程 5.1 為什么需要異步? 5.2 Java對(duì)異步編程的支持 5.3 使用Future編寫異步功能 5.4 Future的增強(qiáng)版:CompletableFuture 5.5 組合式CompletableFuture 5.6 結(jié)合Stream(案例:整合異步計(jì)算結(jié)果) |