【问题标题】:What happen if multiple threads will call await() method of CountDownLatch?如果多个线程调用 CountDownLatch 的 await() 方法会怎样?
【发布时间】:2019-03-07 11:32:39
【问题描述】:

如果多个线程调用 CountDownLatch 的 await() 方法会怎样?

例如,我们有 3 个线程 Thread1、Thread2、Thread3。 Thread1 有正在运行的作业。 Thread2,Thread3 会调用 await 方法。会有什么结果?

Thread2 会与 Thread3 同时恢复,还是 Thread3 会等待 Thread2 结束?

【问题讨论】:

  • Re,“……同时……”这些话意义不大。关于countdownlatch.await(),你真正能说的就是它会减少countdownlatch 的值,并且在值小于或等于零之前它不会返回。没有规范说明在值达到零后多久调用将返回。在处理器数量少于await()ing 线程数的系统上,所有线程在物理上不可能“同时”唤醒。

标签: java spring multithreading countdownlatch


【解决方案1】:

Thread2Thread3 会依次被唤醒,但时间差确实很小。并且不能保证他们中的哪一个会先被唤醒。基本上Thread2会和Thread3同时恢复

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多