原创 08 synchronized 和 Lock 有什麼區別?

原始結構 synchronized 是關鍵字屬於 JVM 層面,反應在字節碼上是 monitorenter 和 monitorexit,其底層是通過 monitor 對象來完成,其實 wait/notify 等方法也是依賴 monito

原创 03 CAS 你知道嗎?

CAS 你知道嗎? 1 2 3 4 5 6 7 8 9 10 11 public class CASDemo { public static void main(String[] args) { Ato

原创 10 線程池用過嗎?生產上你如何設置合理參數?

線程池的拒絕策略你談談? 是什麼 等待隊列已經滿了,再也塞不下新的任務,同時線程池中的線程數達到了最大線程數,無法繼續爲新任務服務。 拒絕策略 AbortPolicy:處理程序遭到拒絕將拋出運行時 RejectedExecution

原创 09 線程池使用過嗎?談談對 ThreadPoolExector 的理解?

爲什使用線程池,線程池的優勢? 線程池用於多線程處理中,它可以根據系統的情況,可以有效控制線程執行的數量,優化運行效果。線程池做的工作主要是控制運行的線程的數量,處理過程中將任務放入隊列,然後在線程創建後啓動這些任務,如果線程數量超過了最

原创 07 堵塞隊列你知道嗎?

阻塞隊列有哪些 ArrayBlockingQueue:是一個基於數組結構的有界阻塞隊列,此隊列按 FIFO(先進先出)對元素進行排序。 LinkedBlokcingQueue:是一個基於鏈表結構的阻塞隊列,此隊列按 FIFO(先進先出)對

原创 06 CountDownLatch/CyclicBarrier/Semaphore 使用過嗎?

CountDownLatch 讓一些線程堵塞直到另一個線程完成一系列操作後才被喚醒。CountDownLatch 主要有兩個方法,當一個或多個線程調用 await 方法時,調用線程會被堵塞,其他線程調用 countDown 方法會將計數減

原创 04 原子類 AtomicInteger 的 ABA 問題談一談?原子更新引用知道嗎

原子類 AtomicInteger 的 ABA 問題談一談?原子更新引用知道嗎? 原子引用 1 2 3 4 5 6 7 8 9 10 public class AtomicReferenceDemo { public

原创 02 請談談你對 volatile 的理解

olatile 是 Java 虛擬機提供的輕量級的同步機制 保證可見性 禁止指令排序 不保證原子性 JMM(Java 內存模型) 你談談 基本概念 JMM 本身是一種抽象的概念並不是真實存在,它描述的是一組規定或則規範,通過這組規範定義了

原创 01 動態代理是如何實現的?JDK Proxy 和 CGLib 有什麼區別?

90% 的程序員都直接或間接的使用過動態代理,無論是日誌框架或 Spring 框架,它們都包含了動態代理的實現代碼。動態代理是程序在運行期間構建代理對象和動態調用代理方法的一種機制。 那麼,如何實現動態代理?JDK Proxy 和 CGL

原创 java代碼精簡之道

1.利用語法 1.1.利用三元表達式 普通: String title; if (isMember(phone)) { title = "會員"; } else { title = "遊客"; } 精簡: Strin

原创 4 強引用、軟引用、弱引用和虛引用分別是什麼?

在Java語言中,除了基本數據類型外,其他的都是指向各類對象的對象引用;Java中根據其生命週期的長短,將引用分爲4類。 強引用 特點:我們平常典型編碼Object obj = new Object()中的obj就是強引用。通過關鍵字n

原创 10 假如生產環境出現 CPU 過高,請談談你的分析思路和定位?

先用 top 命令找出 CPU 佔比最高的 ps -ef 或者 jps 進一步定位,得知是一個怎麼樣的一個後臺程序 定位到具體的線程或代碼 ps -mp 11111 -o THREAD,tid,time -m 顯示所有的線程 -p 進程

原创 3 你平時工作用過的 JVM 常用的基本配置參數有哪些?

-Xms 初始大小內存,默認爲物理內存 1/64 等價於 -XX:InitialHeapSize -Xmx 最大分配內存,默認爲物理內存的 1/4 等價於 -XX:MaxHeapSize -Xss 設置單個線程棧的大小,一般默認

原创 9 生產環境服務器變慢,診斷思路和性能評估談談?

整機:top CPU:vmstat 內存:free 硬盤:df 磁盤IO:iostat 網絡IO:ifstat