Java并发编程:CountDownLatch应用示例

原创 àì夳堔傛蜴生んèń 2024-12-12 10:18 93阅读 0赞

CountDownLatch是Java并发工具包中的一个类,主要用于协调多个线程的执行。当一个或多个线程完成它们的任务并通过调用countDown()方法来减少计数器时,其他等待的线程就会被唤醒。

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

  1. import java.util.concurrent.CountDownLatch;
  2. import java.util.concurrent.TimeUnit;
  3. public class CountDownLatchExample {
  4. private final CountDownLatch latch = new CountDownLatch(2);
  5. public void task1() throws InterruptedException {
  6. System.out.println("Task 1 started.");
  7. // 执行一些耗时操作
  8. Thread.sleep(500); // 耐心等待500毫秒
  9. System.out.println("Task 1 finished.");
  10. // 当任务完成后,通过调用countDown()方法减少计数器
  11. latch.countDown();
  12. }
  13. public void task2() throws InterruptedException {
  14. System.out.println("Task 2 started.");
  15. // 在第一个线程完成任务后,开始执行这个任务
  16. latch.await(5, TimeUnit.SECONDS)); // 等待至少5秒,直到countDownLatch的计数变为0
  17. System.out.println("Task 2 finished.");
  18. // 当任务完成后,通过调用countDown()方法减少计数器
  19. latch.countDown();
  20. }
  21. public static void main(String[] args) {
  22. CountDownLatchExample example = new CountDownLatchExample();
  23. Thread task1 = new Thread(example::task1);
  24. Thread task2 = new Thread(example::task2);
  25. task1.start(); // 开始执行任务1
  26. task2.start(); // 同样开始执行任务2
  27. try {
  28. // 等待两个任务都完成
  29. task1.join();
  30. task2.join();
  31. System.out.println("Both tasks finished successfully.");
  32. } catch (InterruptedException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. }

在这个示例中,我们创建了两个线程task1task2。任务1先执行,完成后调用countDown()方法。任务2在任务1完成之后开始执行,如果任务1未完成,它会一直等待。

通过这个例子,你可以看到CountDownLatch如何协调多个线程的执行顺序。

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

发表评论

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

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

相关阅读