一、Lock數組
Lock功能對應關鍵字synchrozied功能,lock和unlock方法用於加鎖和釋放鎖。等待鎖的線程加入到等待鏈表中,同時阻塞線程,鎖釋放時,從等待鏈表中取出等待的線程執行,取等待的線程分公平與非公平兩種方式,公平方式取第一個等待的線程,非公平方式當前正在獲取鎖的線程可能馬上執行,而不用加入到等待隊列中,排隊執行。線程
二、Condition對象
Condition的await和singal方法對應Object的wait和notify方法,JDK中阻塞隊列使用Condition實現,使用兩個Condition對象,分別是notFull和notEmpty,協調阻塞集合的存取操做。隊列
三、LinkedBlockQueue ArrayBlockQueue內存
LinkedBlockQueue基於鏈表實現,不用一開始就分配一塊空閒的內存空間,所以適合用於不肯定集合大小的狀況,避免預先分配內存,初始化時能夠不指定隊列大小,默認爲Integer.MAX_VALUE,指定大小後不能夠擴容。it
ArrayBlockQueue基於數組實現,構造參數至少有初始容量這個參數,指定容量後不可擴容,同時會預先分配內存空間。io
四、DelayQueue定時任務
DelayQueue用於把須要延遲處理的數據存放到集合中,好比訂單超時後取消訂單,不用定時任務定時輪詢。業務線程把延遲數據添加到DelayQueue中,另一個線程從隊列中poll數據,若是數據時間沒有到期,返回Null,只有到期後才返回。方法
待補充...鏈表