發表於2024-12-23
結閤大量實例,全麵講解Java多綫程編程中的並發訪問、綫程間通信、鎖等難突破的核心技術與應用實踐
Java多綫程無處不在,如服務器、數據庫、應用。多綫程可以有效提升計算和處理效率,大大提升吞吐量和可伸縮性,深得廣大程序員和公司的青睞。很多人學習完JavaSE/JavaEE之後想往更深入的技術進行探索,比如對大數據、分布式、高並發類的專題進行攻剋時,立即遇到針對java.lang包中綫程類的學習,但綫程類的學習並不像JDBC一樣簡單,學習麯綫陡峭,多彎路與“坑”。要學習這些熱點技術,Java多綫程技術避無可避。而本書將引導讀者拿下該“技術高地”。
本書有以下特點:
不留遺漏——全麵覆蓋Java語言多綫程知識點;
直擊要害——實戰化案例精準定位技術細節;
學以至用——精要式演示確保開發/學習不脫節;
潛移默化——研磨式知識講解參透技術要點;
提升效率——垂直式技術精解不繞彎路;
循序提升——漸進式知識點統排確保連貫。
資深Java專傢10年經驗總結,全程案例式講解,首本全麵介紹Java多綫程編程技術的專著。本書以淺白的措辭,結閤大量實例,全麵講解Java多綫程編程中的並發訪問、綫程間通信、鎖等難突破的技術與應用實踐。
全書共7章。第1章講解瞭Java多綫程的基礎,重點介紹綫程類的核心API的使用。第2章講解對並發訪問的控製,即如何寫齣綫程安全的程序。第3章介紹綫程間通信,以提高CPU利用率和係統間的交互,同時增強對綫程任務的把控與監督。第4章講解Lock對象,以更好實現並發訪問時的同步處理。第5章講解移動開發中使用較多的定時器類中的多綫程技術,這是計劃任務執行裏很重要的技術點。第6章講解如何安全、正確地將單例模式與多綫程技術相結閤,避免實際應用中可能會齣現的麻煩。第7章將前麵被遺漏的技術案例在本章節中進行補充,盡量做到不齣現技術空白點。
高洪岩,某世界500強企業高級項目經理,10餘年項目管理與開發經驗,10年Java相關開發經驗,深諳Java技術開發難點與要點,擁有良好的技術素養和豐富的實踐經驗。精通J2EE核心技術、基於EJB的分布式係統開發、Android移動開發、智能報錶、多綫程及高並發等相關的技術內容,近期持續關注並發相關的前沿技術。喜歡技術與教育相結閤的方式共享知識,以共同提高。生活中喜歡攝影, 對輪滑,旅遊,航模亦興趣濃厚。
前 言
第1章 Java多綫程技能,
1.1 進程和多綫程的概念及綫程的優點
1.2 使用多綫程
1.2.1 繼承Thread類
1.2.2 實現Runnable接口
1.2.3 實例變量與綫程安全
1.2.4 留意i——與System.out.println()的異常
1.3 currentThread()方法
1.4 isAlive()方法
1.5 sleep()方法
1.6 getId()方法
1.7 停止綫程
1.7.1 停止不瞭的綫程
1.7.2 判斷綫程是否是停止狀態
1.7.3 能停止的綫程——異常法
1.7.4 在沉睡中停止
1.7.5 能停止的綫程——暴力停止
1.7.6 方法stop()與java.lang.ThreadDeath異常
1.7.7 釋放鎖的不良後果
1.7.8 使用return停止綫程
1.8 暫停綫程
1.8.1 suspend與resume方法的使用
1.8.2 suspend與resume方法的缺點——獨占
1.8.3 suspend與resume方法的缺點——不同步
1.9 yield方法
1.10 綫程的優先級
1.10.1 綫程優先級的繼承特性
1.10.2 優先級具有規則性
1.10.3 優先級具有隨機性
1.10.4 看誰運行得快
1.11 守護綫程
1.12 本章小結
第2章 對象及變量的並發訪問
2.1 synchronized同步方法
2.1.1 方法內的變量為綫程安全
2.1.2 實例變量非綫程安全
2.1.3 多個對象多個鎖
2.1.4 synchronized方法與鎖對象
2.1.5 髒讀
2.1.6 synchronized鎖重入
2.1.7 齣現異常,鎖自動釋放
2.1.8 同步不具有繼承性
2.2 synchronized同步語句塊
2.2.1 synchronized方法的弊端
2.2.2 synchronized同步代碼塊的使用
2.2.3 用同步代碼塊解決同步方法的弊端
2.2.4 一半異步,一半同步
2.2.5 synchronized代碼塊間的同步性
2.2.6 驗證同步synchronized(this)代碼塊是鎖定當前對象的
2.2.7 將任意對象作為對象監視器
2.2.8 細化驗證3個結論
2.2.9 靜態同步synchronized方法與synchronized(class)代碼塊
2.2.10 數據類型String的常量池特性
2.2.11 同步synchronized方法無限等待與解決
2.2.12 多綫程的死鎖
2.2.13 內置類與靜態內置類
2.2.14 內置類與同步:實驗1
2.2.15 內置類與同步:實驗2
2.2.16 鎖對象的改變
2.3 volatile關鍵字
2.3.1 關鍵字volatile與死循環
2.3.2 解決同步死循環
2.3.3 解決異步死循環
2.3.4 volatile非原子的特性
2.3.5 使用原子類進行i++操作
2.3.6 原子類也並不完全安全
2.3.7 synchronized代碼塊有volatile同步的功能
2.4 本章總結
第3章 綫程間通信
3.1 等待/通知機製
3.1.1 不使用等待/通知機製實現綫程間通信
3.1.2 什麼是等待/通知機製
3.1.3 等待/通知機製的實現
3.1.4 方法wait()鎖釋放與notify()鎖不釋放
3.1.5 當interrupt方法遇到wait方法
3.1.6 隻通知一個綫程
3.1.7 喚醒所有綫程
3.1.8 方法wait(long)的使用
3.1.9 通知過早
3.1.10 等待wait的條件發生變化
3.1.11 生産者/消費者模式實現
3.1.12 通過管道進行綫程間通信:字節流
3.1.13 通過管道進行綫程間通信:字符流
3.1.14 實戰:等待/通知之交叉備份
3.2 方法join的使用
3.2.1 學習方法join前的鋪墊
3.2.2 用join()方法來解決
3.2.3 方法join與異常
3.2.4 方法join(long)的使用
3.2.5 方法join(long)與sleep(long)的區彆
3.2.6 方法join()後麵的代碼提前運行:齣現意外
3.2.7 方法join()後麵的代碼提前運行:解釋意外
3.3 類ThreadLocal的使用
3.3.1 方法get()與null
3.3.2 驗證綫程變量的隔離性
3.3.3 解決get()返迴null問題
3.3.4 再次驗證綫程變量的隔離性
3.4 類InheritableThreadLocal的使用
3.4.1 值繼承
3.4.2 值繼承再修改
3.5 本章總結
第4章 Lock的使用
4.1 使用ReentrantLock類
4.1.1 使用ReentrantLock實現同步:測試1
4.1.2 使用ReentrantLock實現同步:測試2
4.1.3 使用Condition實現等待/通知錯誤用法與解決
4.1.4 正確使用Condition實現等待/通知
4.1.5 使用多個Condition實現通知部分綫程:錯誤用法
4.1.6 使用多個Condition實現通知部分綫程:正確用法
4.1.7 實現生産者/消費者模式:一對一交替打印
4.1.8 實現生産者/消費者模式:多對多交替打印
4.1.9 公平鎖與非公平鎖
4.1.10 方法getHoldCount()、getQueueLength()和getWaitQueueLength()的測試
4.1.11 方法hasQueuedThread()、hasQueuedThreads()和hasWaiters()的測試
4.1.12 方法isFair()、isHeldByCurrentThread()和isLocked()的測試
4.1.13 方法lockInterruptibly()、tryLock()和tryLock(long timeout,TimeUnit unit)的測試
4.1.14 方法awaitUninterruptibly()的使用
4.1.15 方法awaitUntil()的使用
4.1.16 使用Condition實現順序執行
4.2 使用ReentrantReadWriteLock類
4.2.1 類ReentrantReadWriteLock的使用:讀讀共享
4.2.2 類ReentrantReadWriteLock的使用:寫寫互斥
4.2.3 類ReentrantReadWriteLock的使用:讀寫互斥
4.2.4 類ReentrantReadWriteLock的使用:寫讀互斥
4.3 本章總結
第5章 定時器Timer
5.1 定時器Timer的使用
5.1.1 方法schedule(TimerTask task, Date time)的測試
5.1.2 方法schedule(TimerTask task, Date firstTime, long period)的測試
5.1.3 方法schedule(TimerTask task, long delay)的測試
5.1.4 方法schedule(TimerTask task, long delay, long period)的測試
5.1.5 方法scheduleAtFixedRate(TimerTask task, Date firstTime, long period)的測試
5.2 本章總結
第6章 單例模式與多綫程
6.1 立即加載/"餓漢模式"
6.2 延遲加載/"懶漢模式"
6.3 使用靜態內置類實現單例模式
6.4 序列化與反序列化的單例模式實現
6.5 使用static代碼塊實現單例模式
6.6 使用enum枚舉數據類型實現單例模式
6.7 完善使用enum枚舉實現單例模式
6.8 本章總結
第7章 拾遺增補
7.1 綫程的狀態
7.1.1 驗證NEW、RUNNABLE和TERMINATED
7.1.2 驗證TIMED_WAITING
7.1.3 驗證BLOCKED
7.1.4 驗證WAITING
7.2 綫程組
7.2.1 綫程對象關聯綫程組:1級關聯
7.2.2 綫程對象關聯綫程組:多級關聯
7.2.3 綫程組自動歸屬特性
7.2.4 獲取根綫程組
7.2.5 綫程組裏加綫程組
7.2.6 組內的綫程批量停止
7.2.7 遞歸與非遞歸取得組內對象
7.3 使綫程具有有序性
7.4 SimpleDateFormat非綫程安全
7.4.1 齣現異常
7.4.2 解決異常方法1
7.4.3 解決異常方法2
7.5 綫程中齣現異常的處理
7.6 綫程組內處理異常
7.7 綫程異常處理的傳遞
7.8 本章總結
Java核心技術係列:Java多綫程編程核心技術 [Java Multi-thread Programming] 下載 mobi pdf epub txt 電子書 格式 2024
Java核心技術係列:Java多綫程編程核心技術 [Java Multi-thread Programming] 下載 mobi epub pdf 電子書書麵破損,書背上感覺落瞭好些灰,發貨的時候真的不注意下的嗎?第一次這麼失望,我買的又不是特價書。。。
評分彆人推薦的,挺好的
評分書不錯,好好學習天天嚮上
評分經常網購,總有大量包裹要收,感覺寫評論花掉瞭我大量的時間和精力!所以在一段時間裏,我總是覺得好想不去評論或者隨便寫寫!但是,有點對不住那些辛苦工作的賣傢客服、倉管、老闆。於是我寫下瞭一小段話,給我覺得能拿到我五星好評的賣傢的寶貝評價裏麵,以示感謝和尊敬!首先,寶貝的性價比很高,每次都會先試試再評價的,雖然寶貝不一定是最好的,但是在同等價位裏麵絕對是最棒的。京東的配送絕對是一流的,送貨速度快,配送員服務態度好,每樣東西都是送貨上門。希望京東能夠再接再厲,做得更好更大,提供更多的好東西給大傢,為京東的商品和服務點贊!
評分韓語: ?? ?? ??.
評分好書不怕多,買瞭慢慢看。正品,包裝完好
評分本以為不需要,但是,思考過好還是要參考一下,有些東西還需證明
評分紙張質量次,印刷水平一般,估計不想是正版書。
評分俄語: Я пришла за соевым соусом.
Java核心技術係列:Java多綫程編程核心技術 [Java Multi-thread Programming] mobi epub pdf txt 電子書 格式下載 2024