多線程中CountDownLatch的使用

一、原始代以下,如何保證線程1、線程二執行完以後,再執行System.out.println("主線程")ide

public static void main(String[] args) throws Exception{spa

new Thread(new Runnable() {線程

@Overrideit

public void run() {io

System.out.println("子線程1開始執行");class

try {im

Thread.sleep(10);static

} catch (InterruptedException e) {img

}di

System.out.println("子線程1執行結束");

}

}).start();

 

 

new Thread(new Runnable() {

@Override

public void run() {

System.out.println("子線程2開始執行");

try {

Thread.sleep(10);

} catch (InterruptedException e) {

}

System.out.println("子線程2執行結束");

}

}).start();

 

System.out.println("主線程");

  }


執行結果以下

image.png


二、使用CountDownLatch

public static void main(String[] args) throws Exception{

CountDownLatch count = new CountDownLatch(2);

new Thread(new Runnable() {

@Override

public void run() {

System.out.println("子線程1開始執行");

try {

Thread.sleep(10);

} catch (InterruptedException e) {

}

System.out.println("子線程1執行結束");

count.countDown();

}

}).start();

 

 

new Thread(new Runnable() {

@Override

public void run() {

System.out.println("子線程2開始執行");

try {

Thread.sleep(10);

} catch (InterruptedException e) {

}

System.out.println("子線程2執行結束");

count.countDown();

}

}).start();

count.await();

System.out.println("主線程");

  }



執行結果以下

image.png

相關文章
相關標籤/搜索