【发布时间】:2012-08-18 20:51:16
【问题描述】:
我有时需要唤醒或发送一个单个线程,我想知道什么是最好和最有效的方法。
第一个解决方案是信号结合wait-notify(我知道如何正确实现这种模式,这不是问题)。
我在某处读到,使用 java.concurrent 库和CountDownLatch 进行信号发送更有效。我也检查了concurrent.locks.Condition,但this 主题指出它只是(程序员方面)更安全和通用的构造,与notify/notifyAll 相比没有性能优势。 Peter Lawrey 建议在 this 评论中使用 Concurrency 库而不是 notify-notifyAll,所以现在我很困惑什么是最佳实践。
一个相关问题:在我的情况下,notify 或 notifyAll 哪个性能更好(即,如果我有一个线程)?我知道有很多类似的主题,但没有一个给出明确的答案。就我而言,从功能上讲,我使用哪个并不重要,但我想知道哪个更快。
【问题讨论】:
-
我几乎总是半信半疑地相信 Peter Lawrey 的建议。
-
我只会在逻辑论点(赞成、反对)是平衡的或者问题是经验性的并且无法通过分析解决的情况下这样做。
标签: java android multithreading performance