官术网_书友最值得收藏!

前言

2005年左右民用的多核CPU正式進入市場,標志著一個新時代來臨了。雙核和多核處理器設計用于在一枚處理器中集成兩個或多個完整執行內核,以支持同時執行并管理多個任務。以前的單核CPU相當于一個人工作,它有很多任務,并很快地在任務之間切換工作,給人們造成的感覺好像是同時在執行,例如我上了一個聊天軟件,我又在打游戲,感覺好像在同時執行,實際上單核CPU只是很快速地在各個任務之間切換工作,而多核心CPU相當于有多個人在同時工作,這才是真正意義上的多核心同時工作,當然它們也會在各個任務之間切換調度。

Java的多線程Thread核心類早在JDK 1.0就已經有了,從一開始就確立了Java最基礎的線程模型,并且這樣的線程模型在后續的修補中,并未發生實質上的變更,可以說是一個具有傳承性的良好設計。

隨著多核CPU的到來,在2004年發布的JDK 1.5中加入了Executors線程池、Callable、Future異步任務支持、Lock鎖、concurrent并發包下的大量工具類,標志著Java多線程的時代來臨了。

本書特點

本書以JDK 17長期維護版本為示例,詳細地介紹了與Java多線程并發相關的知識體系,讓讀者不僅知其然,而且知其所以然。本書對多線程相關的理論分門別類、層層遞進地進行詳細敘述和透徹分析,既體現了各知識點之間的聯系,又兼顧了其漸進性。本書在介紹每個知識點時都給出了該知識點的應用場景,同時配合代碼演示,讓讀者更能明白其實現原理、使用方式。本書豐富的免費配套資源包括源代碼、筆記、完整的配套視頻。

本書主要內容

第1章介紹了Thread線程對象的創建方式、啟動方式、常用方法、優先級、守護線程。

第2章介紹了ThreadGroup線程組的概念、線程對象構造器、線程類常用方法、線程對象異常捕獲、等待線程對象銷毀、線程對象的優雅關閉。

第3章介紹了線程之間的協作,synchronized對象鎖、線程死鎖的產生、Object對象監視器、線程阻塞等待機制、線程喚醒機制、線程可見性、重排序、線程生命周期狀態。

第4章介紹了ThreadLocal線程局部變量的使用、實現機制的核心概念、Reference弱引用。

第5章介紹了Lock鎖接口的相關規范,以及ReentrantLock、Condition、ReentrantReadWriteLock。

第6章介紹了atomic原子包、AtomicBoolean、AtomicInteger、AtomicReference、AtomicIntegerFieldUpdater、AtomicIntegerArray、LongAdder。

第7章介紹了BlockingQueue接口的相關規范,及其核心實現類ArrayBlockingQueue、LinkedBlockingQueue、LinkedTransferQueue、SynchronousQueue、PriorityBlockingQueue、DelayQueue。

第8章介紹了ThreadPoolExecutor線程池整個鏈路的串聯、ThreadPoolExecutor線程池的使用,源碼分析其核心概念、FutureTask的核心概念、AbstractExecutorService的使用、ScheduledThreadPoolExecutor定時器的使用,源碼分析其核心概念。

第9章介紹了線程同步器的使用、CountDownLatch、CyclicBarrier、Semaphore、Phaser。

第10章介紹了AbstractQueuedSynchronizer框架,詳細分析了其源碼,利用官方文檔示例實現自己的同步鎖、同步器。

讀者對象

所有對Java多線程感興趣的軟件開發人員。

資源下載提示

素材(源碼)等資源:掃描目錄上方的二維碼下載。

視頻等資源:掃描封底的文泉云盤防盜碼,再掃描書中相應章節中的二維碼,可以在線學習。

致謝

特別感謝清華大學出版社的趙佳霓編輯。感謝她對本書專業且高效的審閱及對本書提出的建設性意見,有效推動了本書的出版。同時也感謝參與本書出版的所有人員,在大家的辛勤努力下,才有了本書的順利出版。

劉寧萌

2023年2月

主站蜘蛛池模板: 逊克县| 修文县| 山阳县| 西乌| 军事| 广西| 门源| 西安市| 璧山县| 石城县| 库伦旗| 鞍山市| 平舆县| 吉林省| 武清区| 宣恩县| 佳木斯市| 巍山| 盐亭县| 故城县| 体育| 潼南县| 阿尔山市| 白河县| 靖安县| 教育| 金乡县| 泸水县| 铁岭市| 邓州市| 如皋市| 石城县| 竹山县| 彩票| 高平市| 宁夏| 尉犁县| 枣庄市| 湖南省| 张家界市| 天水市|