2011-07-15 18 views
0

我維護一個大小爲N的連接池,並且具有大小N的信號量控制對池中每個連接的訪問​​。應用程序在嘗試發送數據時收集信號量,並在收到響應或套接字超時時釋放信號量。使用信號量(Java)管理連接池

在連接池中運行的後臺線程會爲每個連接發送定期檢測信號。現在,如果心跳失敗,那麼該連接將關閉,並且會努力創建一個新連接。我想確定的是,當連接在池中打開和關閉時,我希望允許增加和減少許可證,以便它直接反映池中的連接數。我可以使用reducePermits(m)API來減少許可數量,但是要增加,在信號量上多次調用release()(即使沒有被獲取)是唯一的方法嗎?

回答

1

是的,release()release(int)是用來增加可用許可數量的方法。 reducePermits(int)存在的唯一原因是提供一種非阻塞手段來減少可用許可的數量。 release無論如何都是非阻塞的,因此increasePermits函數將完全是多餘的。