假设我有一个在doPost
方法上执行某些操作的servlet。此外,我还有一些Connections
池(让它成为N
连接)到一些Web服务,这些服务在每次请求到我的servlet时从池中取出(每个请求1个连接)。在servlet的doPost
方法中,我从池中检索连接,使用它(此操作可能持续太长时间)并将其放回池中。
假设N
连接同时与servlet建立,因此将从池中检索N
个连接。在处理这些请求时,N+1
和N+2
请求已到达,因此他们将等到发布某些连接(我的池由BlockingQueue
支持)。
我想保证N+1
请求在N+2
请求之前拥有可用连接。
我怎样才能做到这一点?
答案 0 :(得分:1)
ArrayBlockingQueue
提供构造函数参数来控制队列的公平性 - 当设置为true
时,它保证线程将以与它们相同的顺序获取队列的元素叫take()
。
据我了解,使用ArrayBlockingQueue
和fair = true
作为游泳池的后备队列应该足以满足您的需求。