gpt4 book ai didi

java - 并发包中的阻塞队列方法;

转载 作者:行者123 更新时间:2023-12-01 14:20:08 25 4
gpt4 key购买 nike

想知道为什么 method drainTo 仅出现在并发收集框架中(特别是 BlockingQueue),而不出现在常规收集框架中。这有什么理由吗?提前致谢。

最佳答案

与往常一样,对于此类问题,如果不询问类(class)的作者本人,就很难回答。但我们可以做出一些有根据的猜测。

javadoc 指出:

Removes all available elements from this queue and adds them to the given collection. This operation may be more efficient than repeatedly polling this queue.

所以根本原因可能是为了效率。

drainTo 本质上相当于(为了简单起见,在单线程环境中):

while ((e = queue.poll()) != null) collection.add(e);

使用阻塞队列,每次迭代(很可能)都会获取一些锁并再次释放它,这不是最佳的。例如,如果查看 ArrayBlockingQueue 中的实现,您会发现在整个迭代中只获取一次锁,可能是因为该库的作者发现它效率更高。

关于java - 并发包中的阻塞队列方法;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com