在什么条件下我应该自动将Connection拉回连接池(Java)

时间:2014-08-16 10:04:22

标签: java multithreading connection connection-pooling

我正在尝试使用java.util.concurrent中的Java和Semaphores为简单的并发连接池编写代码。 一切都很好但是在编写应该检查正在使用的池中的所有Connections的守护程序线程时,如果它们的使用时间超过某个IDLE_TIMEOUT,则将它们拉回池中,我就会遇到问题。 我如何理解连接已过期?该用户只是忘了关闭它? 目前我的实现使用HashMap,我将ConnectionSystem.currentTimeInMillis()放在一起,然后我的守护程序线程定期检查时间不超过5秒。但是如果用户需要连接的时间超过5秒呢? 所以,我至少需要一个更好的方法的想法。任何链接,材料,建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以为用户提供例如AutomaticConnectionLongRunningConnectionUnmanagedConnection的连接选择。 AutomaticConnection可能就像您当前的连接在默认时间后关闭它们一样。对于LongRunningConnection,您可以让用户提供一个long来指示在自动关闭之前他们期望使用连接的毫秒数。最后,对于UnmanagedConnection,用户将有责任自行调用。也许您还可以根据调用Connection方法的时间重置计时器。