Java并发工具:CountDownLatch应用示例

原创 逃离我推掉我的手 2024-12-07 09:51 156阅读 0赞

CountDownLatch是Java并发编程中的一个工具类,主要用于协调多个线程的执行。当count为0时,会触发一个屏障,所有等待该屏障的线程都会被唤醒。

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

  1. import java.util.concurrent.CountDownLatch;
  2. import java.util.concurrent.TimeUnit;
  3. public class CountDownLatchExample {
  4. private CountDownLatch countDownLatch;
  5. public CountDownLatchExample(int initialCount) {
  6. this.countDownLatch = new CountDownLatch(initialCount);
  7. }
  8. // producer thread
  9. public void produce() throws InterruptedException {
  10. for (int i = 0; i < 10; i++) {
  11. System.out.println("Produce: " + i);
  12. countDownLatch.countDown();
  13. }
  14. System.out.println("Producer done.");
  15. }
  16. // consumer thread
  17. public void consume() throws InterruptedException {
  18. System.out.println("Consume start.");
  19. countDownLatch.await(5, TimeUnit.SECONDS)); // wait for 5 seconds or until count reaches zero
  20. if (countDownLatch.getCount() == 0) {
  21. System.out.println("All consumers done.");
  22. } else {
  23. System.out.println("Some consumers still running.");
  24. }
  25. }
  26. public static void main(String[] args) {
  27. CountDownLatchExample example = new CountDownLatchExample(10); // initial count is 10
  28. new Thread(example::produce).start(); // producer thread
  29. new Thread(example::consume).start(); // consumer thread
  30. }
  31. }

在这个例子中,我们创建了一个初始计数为10的CountDownLatch。生产者线程会依次执行10次任务,并使用countDown()方法减少计数。消费者线程会等待所有任务完成后才继续执行。

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

发表评论

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

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

相关阅读