併發框架和集合

2021-09-25 18:45:07 字數 1410 閱讀 7283

countdownlatch是乙個非常實用的多執行緒控制工具類。下面寫了乙個小例子

public class countdownlatchdemo  catch (interruptedexception e) 

countdownlatch.countdown();

}).start();

}countdownlatch.await();

system.out.println("執行完畢");

}}

檢視一下await方法

public void await() throws interruptedexception
呼叫 sync(同步工具的方法獲得共享鎖)。接下來看一下acquiresharedinterruptibly方法

public final void acquiresharedinterruptibly(int arg)

throws interruptedexception

進入countdownlatchtryacquireshared方法檢視獲取共享鎖的判斷實現

protected int tryacquireshared(int acquires)
看完了判斷條件接下來看看如何獲取共享鎖abstractqueuedsynchronizer(aqs)類下的doacquiresharedinterruptibly

private void doacquiresharedinterruptibly(int arg)

throws interruptedexception

}if (shouldparkafte***iledacquire(p, node) &&

parkandcheckinterrupt())

throw new interruptedexception();

}} finally

}

先定義count值 countdownlatch.countdown() 每執行一次,count值減一,countdownlatch.await()讓執行緒等待,當count減少到0時,所有執行緒一起併發執行。

資源有限共享。訊號量表示可以使用的資源數量

1 請求資源  acquire    (獲取許可)

2 使用資源  業務處理

3 釋放資源  release

semaphore 是 synchronized 的加強版,作用是控制線程的併發數量。就這一點而言,單純的synchronized 關鍵字是實現不了的。

java成神之 集合框架之佇列,棧,集合併發

棧 集合併發 結語此佇列第乙個元素永遠是最小的,先進先出 priorityqueuequeue new priorityqueue 雙端佇列 dequedequea new linkedlist dequea.add element 1 dequea.addfirst element 2 deque...

集合框架 Map集合

map集合 同collection,是集合框架中的頂層介面。一次新增一對元素,collection一次新增乙個元素。所有,map集合也稱為雙列集合,collection集合稱為單列集合。介面map key是鍵,value是值,其實map集合中儲存的就是鍵值對,map集合中必須保證鍵的唯一性。常用方法...

集合框架 TreeSet集合

泛型就是一種不確定的資料型別,使用 字母 可以使用在類上,方法上和介面上。泛型類,指的是在類上有乙個確定的資料型別,在建立該類物件時確定其資料型別。表示一種不確定的資料型別 public class boxpublic void setelement e element 泛型類上的,在建立物件的時候...