原创 JAVA集合專題之深入學習

1.背景 集合雖然用起來非常簡單... 但是面試確問得很多,很深.... 最重要的是集合的設計裏面使用了大量的非常典型的多線程設計... 如果能把集合中的源碼學一遍,相信你的多線程功底會大大提升.... 在這個課程中我們將深入源碼給大家講解

原创 java多線程-補充-面試

1.背景     在這個課程之前我們已經講了2個關於多線程的課程 一個是主要是關於多線程基礎的: 另一個主要是關於JUC的: 今天我們對之前課程中沒有講到的或者重要的或者是童鞋們反饋的技術點做一個補充講解 當然,多線程是編程中非常重要的技

原创 java多線程之-線程池狀態

1.背景 這一節我們來學習一下線程池狀態..... 2.線程池狀態 狀態名稱 高3位 是否接受新任務 是否處理隊列中的任務 說明 RUNNING 111 是 是 線程池正常運行狀態 SHUTDOWN 000 否 是 不接收新的

原创 java多線程之自定義線程池

1.背景 線程池.....大家常用.... 自己搞一個,順便練習一下多線程編程 2.自定義線程代碼 2.1.拒絕策略接口 @FunctionalInterface public interface MyRejectPolicy<T> {

原创 java多線程之-自定義數據庫連接池

1.背景 數據庫鏈接池大家不陌生吧... 不多說了,直上代碼... 2.連接池具體實現 1.jdbc鏈接的實例對象 /** * @author 姿勢帝-博客園 * @address https://www.cnblogs.com/ne

原创 java多線程之-不可變final

1.背景 final這個關鍵字相信大家不陌生吧... 看看下面的案例 2.時間格式化之線程不安全SimpleDateFormat package com.ldp.demo08final; import lombok.extern.sl

原创 java多線程之-CAS無鎖-常見API

1.背景 這一節,就是學習常用的cas對象與api ..... 2.原子整數 直接看代碼吧,或者看API文檔 2.1.AtomicInteger的API演示 package com.ldp.demo06Atomic; import j

原创 java多線程之-CAS無鎖

1.背景 加鎖確實能解決線程併發的的問題,但是會造成線程阻塞等待等問題 那麼有沒有一種方法,既可以線程安全,又不會造成線程阻塞呢? 答案是肯定的......請看如下案例 注意:重要的文字說明,寫在了代碼註釋上,這樣便於大家理解,請閱讀代碼和

原创 java多線程之-CAS無鎖-unsafe理解

1.背景 這一節我們來學習一下unsafe對象 2.案例 1.自定義一個獲取unsafe對象的類 package com.ldp.demo07Unfase; import sun.misc.Unsafe; import java.lan

原创 多線程之活鎖(瞭解一下就可以了)

1.背景 活鎖的概念: 活鎖出現在兩個線程互相改變對方的結束條件,最後誰也無法結束 也叫着死循環,在這裏作爲一個概念理解 2.代碼 package com.ldp.demo01; import com.common.MyThreadUt

原创 多線程之哲學家就餐問題

1.背景 哲學家就餐問題是1965年由Dijkstra提出的一種線程同步的問題。 問題描述:一圓桌前坐着5位哲學家,兩個人中間有一隻筷子,桌子中央有面條。 哲學家思考問題,當餓了的時候拿起左右兩隻筷子喫飯,必須拿到兩隻筷子才能喫飯。 上述問

原创 java多線程之ReentrantLock詳解

1.背景 2.基本語法 public class Test01 { // 定義鎖 static ReentrantLock reentrantLock = new ReentrantLock(); public

原创 多線程之深入理解park與unpark

1.背景 面試官問,如何暫停一個線程勒..... 說說你對park的理解....... 2.代碼 package com.ldp.demo01; import com.common.MyThreadUtil; import lombok

原创 多線程設計模式之保護性暫停

1.背景 面試官問你知道多線程中join或Future的實現原理麼? 2.代碼 package com.ldp.demo01; import com.common.MyThreadUtil; import lombok.extern.s

原创 多線程之模擬自定義消息隊列

1.背景 面試官問,假設讓你設計一個隊列,你的思路是... 2.代碼 package com.ldp.demo01; import com.common.MyThreadUtil; import lombok.extern.slf4j.