CountDownlatch优于等待/通知机制的优势是什么?

时间:2015-02-26 09:39:03

标签: java multithreading

我读过这个答案:

Difference between wait-notify and CountDownLatch

我知道这两个过程都不​​同,

  1. CountDownlatch是一种新机制,而wait / notify是一个原始的 协作线程之间协调的方式
  2. wait是Object的一个方法,await是CountDownlatch的方法。
  3. 使用CountDownlatch更容易,更清洁等等。
  4. 我的问题更多的是功能方面:

    是否存在等待/通知机制无法解决的情况,但只能通过CountDownLatch解决?

    如果没有,那么在功能上,CountDownlatch的引入只是为了让线程之间的协调更简单,更清晰,对吗?

3 个答案:

答案 0 :(得分:3)

当然,您可以使用wait,notify,synchronized等创建相同的功能。 CountDownLatch是使用这些原语实现的普通Java类。有关详细信息,您可以查看实际的源代码:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/CountDownLatch.java

答案 1 :(得分:1)

java.util.concurrent中的类旨在使某些多线程场景更易于编码和管理。您可以使用waitnotify等低级结构,但您确实需要知道自己在做什么。

以下是API的摘录:

  

实用程序类在并发编程中通常很有用。这个   包包括一些小的标准化可扩展框架,如   以及一些提供有用功能的类   否则单调乏味或难以实施。

答案 2 :(得分:1)

考虑一种情况,如果满足条件,您可能不想等待。你可以弄脏你的手并探测锁,但这通常是错误的。

CountDownLatch拯救了,是的,为了方便,但不仅仅是为了解决等待/通知范式。

还明白使用CountDownLatch作为等待多种条件的方法。

为什么在可用的第一方时重新发明轮子?