首页 > 解决方案 > 为多生产者和多消费者排队以获得最佳性能和线程安全

问题描述

我有多个生产者和多个消费者,Java 中以最佳性能时间和内存使用率处理此问题的最佳队列是什么?

它是 ConcurrentSkipListSet 还是 ConcurrentLinkedQueue 还是有其他需要考虑的?

标签: javamultithreadingproducer-consumer

解决方案


内存使用情况取决于您在代码流中创建这些大型对象的位置。

如果您在队列中创建/持有大量资金,那么 LinkedBlockingDeque 可能会提供一定程度的控制。请参阅https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/LinkedBlockingDeque.html

但是,如果生产者正在创建大型对象且速率非常高 - 您仍将在队列之外处理它。


推荐阅读