我正在尝试使用java.util.concurrent
中的Java和Semaphores为简单的并发连接池编写代码。
一切都很好但是在编写应该检查正在使用的池中的所有Connections的守护程序线程时,如果它们的使用时间超过某个IDLE_TIMEOUT,则将它们拉回池中,我就会遇到问题。
我如何理解连接已过期?该用户只是忘了关闭它?
目前我的实现使用HashMap
,我将Connection
与System.currentTimeInMillis()
放在一起,然后我的守护程序线程定期检查时间不超过5秒。但是如果用户需要连接的时间超过5秒呢?
所以,我至少需要一个更好的方法的想法。任何链接,材料,建议都表示赞赏。
答案 0 :(得分:0)
您可以为用户提供例如AutomaticConnection
,LongRunningConnection
,UnmanagedConnection
的连接选择。 AutomaticConnection
可能就像您当前的连接在默认时间后关闭它们一样。对于LongRunningConnection
,您可以让用户提供一个long来指示在自动关闭之前他们期望使用连接的毫秒数。最后,对于UnmanagedConnection
,用户将有责任自行调用。也许您还可以根据调用Connection
方法的时间重置计时器。