1. 程式人生 > >Java中類似C#中Task.wait()的類CountDownLatch

Java中類似C#中Task.wait()的類CountDownLatch

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