原创 第七章、核心5:Thread和Object類中線程相關方法(wait/notify、sleep、join、yield)

1、方法概覽 類 方法名 簡介 Thread sleep相關 本表格的“相關”,指的是重載方法,如sleep有多個重載方法,但實際作用大同小異 . join 主線程等待ThreaA執行完畢(ThreadA.join()) . yield相

原创 第十三章、 併發死鎖問題與企業級解決方案(死鎖、活鎖、飢餓)

1、死鎖是什麼?有什麼危害? 1.1 什麼是死鎖? 發生在【併發】中 【互不相讓】:當兩個(或更多)線程(或進程)相互持有對方所需要的資源,又不主動釋放,導致所有人都無法繼續前進,導致程序陷入無盡的阻塞,這就是死鎖。  多個線程造成死鎖的

原创 第五章、核心3:線程停止、中斷之最佳實踐

1、原理介紹:使用interrupt來通知,而不是強制 interrupt是中斷,A線程通知B線程去中斷,而B線程是具有主動權的。B線程何時停止是B線程自己決定的,可能根據當前業務邏輯完成情況,所以說是通知,而不是強制 2、停止線程的最

原创 第十二章、 Java內存模型JMM——底層原理

1、到底什麼叫“底層原理”?本章研究的內容是什麼? 1.1 從Java代碼到CPU指令 ①最開始,我們編寫的Java代碼,是*.java文件 ②在編譯(javac命令)後,從剛纔的*.java文件會變出一個新的Java字節碼文件(*.

原创 第四章、核心2:開啓多線程啓動的世界(start與run的區別)

1、start()和run()的比較 /** * StartAndRunMethod * * @author venlenter * @Description: 對比start和run兩種啓動線程的方法 * @since un

原创 第三章、 核心1:實現多線程的正確姿勢

1、實現多線程的方法是1種,2種還是4種? Oracle官網的文檔是如何寫的? 方法一:實現Runnable接口 方法二:繼承Thread類 1.1 實現示例 實現Runnable接口 /** * RunnableStyle *

原创 第十四章、 總結與展望(彙總面試題)

1、面試高頻考點 1、有多少種實現線程的方法?典型錯誤答案和正確答案 2、實現Runnable接口和繼承Thread類哪種方式更好? 3、一個線程兩次調用start()方法會出現什麼情況?爲什麼? 4、既然start()方法會調用run(

原创 第九章、核心7:線程異常處理(全局異常處理UncaughtExceptionHandler)

線程的未捕獲異常UncaughtException應該如何處理? 1、爲什麼需要UncaughtExceptionHandler? 主線程可以輕鬆發現異常,子線程卻不行 子線程異常無法用傳統方法(try-catch)捕獲(類似main方法

原创 第十一章、 多線程的八大核心總結

1、八大核心面試問題總結 有多少種實現線程的方法?思路有5點 實現Runnable接口和繼承Thread類哪種方式更好? 一個線程兩次調用start()方法會出現什麼情況?爲什麼? 既然start()方法會調用run()方法,爲什麼我們選

原创 第十章、核心8:線程安全-多線程會導致的問題

1、線程安全 1.1 什麼是線程安全 當多個線程訪問一個對象時,如果不用考慮這些線程在運行時環境下的調度和交替執行,也不需要進行額外的同步,或者在調用方進行任何其他的協調操作,調用這個對象的行爲都可以獲得正確的結果,那這個對象是線程安全的

原创 第八章、核心6:線程各屬性

1、線程各屬性縱覽 屬性名稱 用戶 編號(ID) 每個線程有自己的ID,用於標識不同的線程 名稱(Name) 作用讓用戶或程序員在開發、調試或運行過程中,更容易區分每個不同的線程、定位問題等 是否是守護線程(isDaemon) true代

原创 第六章、核心4:圖解線程生命週期

1、有哪6種狀態? 2、每個狀態是什麼含義? New:新建還未執行(start()) Runnable(可運行的):調用了start方法後,就會變爲Runnable狀態 Blocked:進入synchronized修飾的區域,同時鎖被其他

原创 @ControllerAdvice + @ExceptionHandler 全局處理異常

零、前言 對於與數據庫相關的 Spring MVC 項目,我們通常會把 事務 配置在 Service層,當數據庫操作失敗時讓 Service 層拋出運行時異常,Spring 事物管理器就會進行回滾。 如此一來,我們的 Controller

原创 Java多線程之內存可見性和原子性詳解:Synchronized和Volatile

一、 背景 能否保證 synchronized volatile 原子性 √ × 可見性 √ √ 二、 可見性介紹 2.1 可見性介紹 2.1.1 定義 可見性:一個線程對共享變量值的修改,能夠及時地被其他線程看到 共享變量:如果一個變量