Java并发编程问题:CountDownLatch使用示例

原创 秒速五厘米 2024-12-07 20:51 145阅读 0赞

CountDownLatch是Java并发工具类之一,用于协调多个线程。当一个线程到达CountDownLatch的down方法(将计数器值减1),而其他等待该事件的线程在count <= 0时会进入wait状态。

下面是一个简单的CountDownLatch使用示例:

  1. import java.util.concurrent.CountDownLatch;
  2. import java.util.concurrent.TimeUnit;
  3. public class CountDownLatchExample {
  4. private CountDownLatch countDownLatch = new CountDownLatch(3);
  5. public void thread1() {
  6. System.out.println("Thread 1 started");
  7. try {
  8. countDownLatch.await();
  9. } catch (InterruptedException e) {
  10. e.printStackTrace();
  11. }
  12. System.out.println("Thread 1 finished");
  13. }
  14. public void thread2() {
  15. System.out.println("Thread 2 started");
  16. // 第一个线程已经调用了await,所以这里直接down
  17. countDownLatch.countDown();
  18. try {
  19. countDownLatch.await();
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }
  23. System.out.println("Thread 2 finished");
  24. }
  25. public static void main(String[] args) {
  26. CountDownLatchExample example = new CountDownLatchExample();
  27. Thread thread1 = new Thread(example::thread1);
  28. Thread thread2 = new Thread(example::thread2);
  29. // 启动两个线程
  30. thread1.start();
  31. thread2.start();
  32. // 等待所有线程执行完毕
  33. thread1.join();
  34. thread2.join();
  35. System.out.println("All threads finished");
  36. }
  37. }

在这个示例中,我们创建了三个线程:thread1thread2 和一个主线程。我们使用CountDownLatch来协调它们的执行。

当所有计数达到0时(即countDownLatch.countDown()调用后),其他等待的线程会进入wait状态,并在被中断后由相应的Thread重新唤醒。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读