Java併發包小結

一、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,只有到期後才返回。方法

 

待補充...鏈表

相關文章
相關標籤/搜索