java - 为多生产者和多消费者排队以获得最佳性能和线程安全
问题描述
我有多个生产者和多个消费者,Java 中以最佳性能时间和内存使用率处理此问题的最佳队列是什么?
它是 ConcurrentSkipListSet 还是 ConcurrentLinkedQueue 还是有其他需要考虑的?
解决方案
内存使用情况取决于您在代码流中创建这些大型对象的位置。
如果您在队列中创建/持有大量资金,那么 LinkedBlockingDeque 可能会提供一定程度的控制。请参阅https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/LinkedBlockingDeque.html
但是,如果生产者正在创建大型对象且速率非常高 - 您仍将在队列之外处理它。
推荐阅读
- reactjs - 在 React 状态下访问嵌套数组会出现错误 Uncaught TypeError: Cannot read properties of undefined (reading '0')
- go-get - 获取错误“无法从远程存储库读取”
- mongodb - 使用 mongoDB 聚合使用数组文档填充对象,保留该对象中的键
- r - 在 R 中,帮助将常规表格转换为带边框的 ggplot 表格?
- go - Go YouTube API:用什么代替 liveBroadcasts.control 方法来显示石板?
- instruments - 如何在 Xcode 13 / iOS15 中测量能源使用情况?
- reactjs - 如何防止在错误按钮上提交表单并且只在右键上工作
- spring-boot - @cachePut 用于 Spring Boot 中对象列表中的数据更新
- c++ - 无法使用 lldbbridge.py 来检查 Qt 对象,因为“包装器前缀”中的错误
- r - 地理编码:找到两组位置之间距离的有效方法