原创 Java併發-ThreadLocal

ThreadLocal與線程同步機制的區別 線程同步機制是共享同一個變量 ThreadLocal是爲每個線程創建一個變量副本 ThreadLocal ThreadLocal內部還有一個靜態內部類ThreadLocalMap,該內

原创 JavaWeb-POST與GET

POST與GET區別 GET在瀏覽器回退時是無害的,而POST會再次提交請求。 GET產生的URL地址可以被Bookmark,而POST不可以。 GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。 GET請求只能進

原创 Java併發-內存屏障

現代的處理器使用寫緩衝區臨時保存內存寫入的數據。寫緩衝區可以保證指令流水線持續運行,他可以避免由於處理器停頓下來等待內存寫入數據而產生的延遲。同時,通過以批處理的方式刷新寫緩衝區,以及合併寫緩衝區中對同一個內存地址的多次寫,減少對

原创 Spring-Quartz內部組件架構+簡易demo

Quartz對任務調度領域進行了高度抽象,抽象出了調度器,觸發器,任務。 簡單介紹下幾個組件的意思,具體起什麼作用 Job:是一個接口,只有一個excute(),定義需要執行的任務,運行時的信息保存在JobDataMap中。 Tri

原创 爲什麼equals()與hashCode(),這兩個方法需要一起覆蓋?

在哈希表中,當我們向其添加對象object時,首先調用hashCode()方法計算object的哈希碼,通過哈希碼可以直接定位object在哈希表中的位置(一般是哈希碼對哈希表大小取餘)。如果該位置沒有對象,可以直接將object插入該位

原创 Java併發-Executor框架

Executor框架的兩級調度模型 Executor框架主要由3部分組成 1.任務:包括被執行任務需要實現的接口:Runnable接口或Callable接口 2.任務的執行:包括執行機制的核心接口Executor,以及繼承自Exe

原创 Java併發-線程池

線程池的好處 1.降低資源消耗。通過重複利用已創建的線程降低線程創建和銷燬造成的消耗。 2.提高相應速度。當任務到達時,任務可以不需要等到線程創建就能立即執行。 3.提高線程的可管理性。線程是稀缺資源,如果無限制地創建,不僅會消耗系統

原创 JVM掃盲-運行時數據區域

程序計數器 可以把它看作是當前線程所執行的字節碼的行號指示器。 字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支,循環,跳轉,異常處理,線程恢復等基礎功能都需要依賴這個計數器來完成。 程序計數器是每

原创 Java併發-final

final域的重排序規則 1.在構造函數內對一個final域的寫入,與隨後把這個被構造對象的引用賦值給一個引用變量,這兩個操作之間不能重排序。 2.初次讀一個包含final域的對象的引用,與隨後初次讀這個final域,這兩個操作之間不能

原创 Java併發-Thread.intrrupted()與isInterrupted()與interrupt()

中斷可以理解爲線程的一個標識位屬性,它表示一個運行中的線程是否被其他線程進行了中斷操作。其他線程通過調用該線程的interrupt()方法對其進行中斷操作。 線程通過方法isInterrupted()來進行判斷是否被中斷,也可以調用靜態

原创 Java併發-類的初始化

在首次發生下列任意一種情況時,一個類或接口類型T將被立即初始化。 1)T時一個類,而且一個T類型的實例被創建。 2)T是一個類,且T中聲明的一個靜態方法被調用。 3)T中聲明的一個靜態字段被賦值。 4)T中方聲明的一個靜態字段被使

原创 Java併發-AQS如何完成線程同步

同步隊列 AQS依賴內部的同步隊列(FIFO雙向隊列)來完成同步狀態的管理,當前線程獲取同步狀態失敗時,同步器將會將當前線程以及等待狀態等信息構造成爲一個節點(NODE)並將其加入同步隊列,同時會阻塞當前線程,當同步狀態釋放時,會把首節點

原创 Java併發-CountDownLatch

CountDownLatch CountDownLatch允許一個或多個線程等待其他線程完成操作。 CountDownLatch的構造函數接受一個int類型的參數作爲計數器。 當我們調用COuntDownLatch的countDown

原创 Java併發-CyclicBarrier

CyclicBarrier 它允許一組線程互相等待,知道到達某個公共屏障點。barrier在釋放等待線程後可以重用。 CyclicBarrier的內部是使用重入鎖ReentrantLock和Condition。 public C

原创 Java併發-ReentrantReadWriteLock鎖降級/鎖升級

讀寫鎖 讀寫鎖維護了一對鎖,一個讀鎖和一個寫鎖。 在同一時刻可以允許多個讀線程訪問,但是在寫線程訪問時,所有的讀線程和其他寫線程均被阻塞。 鎖升級/鎖降級 同一個線程中,在沒有釋放讀鎖的情況下,就去申請寫鎖,這屬於鎖升級,Reentra