0
假設我有一個servlet,它在doPost
方法中執行一些操作。另外我還有一些Connections
池(讓它爲N
連接)到每個請求到我的小服務器(每個請求1個連接)從池中取出的一些web服務。在doPost
servlet的方法中,我從池中檢索連接,使用它(此操作可能會持續太久)並將其放回池中。向servlet訂購請求
假設N
與servlet同時連接,因此將從池中檢索N
連接。在請求正在處理的同時,N+1
和N+2
請求已到達,因此它們將等待直到釋放某個連接發生(我的池由BlockingQueue
支持)。
我想保證N+1
請求將擁有早於N+2
請求的可用連接。
我該如何做到這一點?
ArrayBlockingQueue由固定大小的數組支持。請記住IllegalStateException。 –
如果在實例化之前隊列的大小未知,該怎麼辦? – maks
@maks:由於'LinkedBlockingQueue'沒有公平的選項,你必須根據公平同步原語實現你自己的阻塞隊列。見http://stackoverflow.com/questions/4046838/is-there-any-unbounded-fair-blocking-queue-in-java – axtavt