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
進入countdownlatch的tryacquireshared方法檢視獲取共享鎖的判斷實現
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 泛型類上的,在建立物件的時候...