相关疑难解决方法(0)

ArrayBlockingQueue和LinkedBlockingQueue有什么区别

  1. 使用ArrayBlockingQueue的情况更好,何时使用LinkedBlockingQueue更好?
  2. 如果LinkedBlockingQueue默认容量等于MAX Integer,将它用作具有默认容量的BlockingQueue真的有用吗?

java blockingqueue blockingcollection

38
推荐指数
4
解决办法
3万
查看次数

Java:ArrayBlockingQueue与LinkedBlockingQueue

我认为,在大多数情况下,ArrayBlockingQueue表现会比表现更好LinkedBlockingQueue.但是,当数组中总有足够的空间时就是这种情况......如果它已经满了,那么它是否会表现得如此之好是不可预测的,因为它会阻塞试图将数据推入队列的线程. .

所以,我的问题是:是否有任何中间实施BlockingQueue?说,一个ArrayListBlockingQueue或一个BucketListBlockingQueue?类似于数组列表的东西,以便队列可以动态增加容量,同时仍然可以通过使用数组最终存储数据获得合理的好处?

java queue multithreading synchronization

17
推荐指数
2
解决办法
2万
查看次数

"并发应用程序中LinkedBlockingQueue的可预测性能不太可能"是什么意思?

对于我正在处理的日志记录功能,我需要有一个处理线程,当计数达到或超过一定数量时,它将等待作业并批量执行.由于这是生产者消费者问题的标准情况,我打算使用BlockingQueues.我有许多生产者使用add()方法向队列添加条目,而只有一个使用take()在队列中等待的消费者线程.

LinkedBlockingQueue似乎是一个不错的选择,因为它没有任何大小限制,但是我很困惑从文档中读取这个.

链接队列通常具有比基于阵列的队列更高的吞吐量,但在大多数并发应用程序中具有较低的可预测性能.

没有清楚地解释这个陈述的含义.有人可以点亮吗?这是否意味着LinkedBlockingQueue不是线程安全的?你们有没有遇到任何使用LinkedBlockingQueue的问题.

由于生产者的数量要多得多,因此总会有一种情况我可以遇到队列被大量条目淹没的情况.如果我改为使用ArrayBlockingQueue,它将队列的大小作为构造函数中的参数,我总是会遇到容量完全相关的异常.为了避免这种情况,我不知道如何确定我应该用实例化ArrayBlockingQueue的大小.您是否必须使用ArrayBlockingQueue解决类似的问题?

java concurrency producer-consumer blockingqueue

4
推荐指数
1
解决办法
507
查看次数