如果我的问题很愚蠢,我很抱歉。
我正在使用 ArrayBlockingQueue。
private ArrayBlockingQueue<RequestParameters> processorQueue;
private int sizeOfQueue = 3000;
在这里,我的生产者是单独的线程,消费者是单独的线程。两者都在单生产者-消费者线程模型中运行。
现在,我正在运行我的 Java 应用程序,它向我的 Servlet 发出请求。生产者将请求放入队列。消费者对请求进行拍照并开始处理,这涉及到数据库操作。(完成任务大约需要 1 秒)
在这里,我的生产者收到请求的速度非常快,它会填满队列并等待消费者开始处理并在队列中腾出空间。
我的问题是
- 我应该使用什么最好的 BlockingQueue Impl,这样我才能获得最好的性能。
- 当队列大小已满时会发生什么,我的意思是 Servlet 将收到请求,而不管生产者是否正在等待队列获得空缺。所有这些传入的请求呢?这些请求将去哪里?这些请求是否存储在 JVM 内存中并在非阻塞时提供给生产者线程?
谢谢。