Java中類似C#中Task.wait()的類CountDownLatch
阿新 • • 發佈:2018-07-03
ava 完成 rgs tar wait方法 而在 stat down interrupt
當主線程開辟多個子線程,而又需要這些子線程都執行完成後再執行主線程後續的操作,在C#中可以通過Task的wait方法來實現,然而在Java中也有類型的類CountDownLatch,具體用法如下:
public static void main(String[] args) throws InterruptedException { CountDownLatch latch = new CountDownLatch(3); for (int i = 0; i < 3; i++) { Thread t = new Thread() {public void run() { try { Thread.sleep(2000);//暫停2秒 System.out.println("線程:"+this.getId()+"完成"); } catch (InterruptedException e) { e.printStackTrace(); } latch.countDown(); } }; t.start(); } System.out.println("等待3個線程完成"); latch.await();//線程掛起,等待3個線程都執行完後再執行下面的內容 System.out.println("3個線程都已完成"); }
首先我們需要定義總共的線程數並實現CountDownLatch類,每個線程執行完畢後都要執行countDown方法,相當於把總線程數減一。當latch.await()檢測到線程數為0的時候就執行後續的相關方法。
Java中類似C#中Task.wait()的類CountDownLatch