订购servlet请求

时间:2012-10-08 11:02:48

标签: java multithreading

假设我有一个在doPost方法上执行某些操作的servlet。此外,我还有一些Connections池(让它成为N连接)到一些Web服务,这些服务在每次请求到我的servlet时从池中取出(每个请求1个连接)。在servlet的doPost方法中,我从池中检索连接,使用它(此操作可能持续太长时间)并将其放回池中。

假设N连接同时与servlet建立,因此将从池中检索N个连接。在处理这些请求时,N+1N+2请求已到达,因此他们将等到发布某些连接(我的池由BlockingQueue支持)。

我想保证N+1请求在N+2请求之前拥有可用连接。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

ArrayBlockingQueue提供构造函数参数来控制队列的公平性 - 当设置为true时,它保证线程将以与它们相同的顺序获取队列的元素叫take()

据我了解,使用ArrayBlockingQueuefair = true作为游泳池的后备队列应该足以满足您的需求。