具有可变使用时间的超时机制

时间:2015-03-13 11:20:15

标签: java algorithm

如果没有在特定时间段内使用,我想实现关闭连接的机制。对于所有连接,此时间是恒定的。打开的连接可以多次使用,因此我需要更新使用时间并始终计算当前时间和使用时间之间的差异。我还需要关闭超时超时的连接。

我打开的连接在Map中。 (Map<Id, Connection>)其中IdInteger

我考虑过使用DelayQueue来解决我的问题,但是在这种类型的Queue中无法更新使用时间(在这种情况下是延迟)。

我也知道这个机制应该在单独的线程中工作。

请给我一些关于最佳实施方法或示例的提示。我应该使用什么样的数据结构? 我也可以使用Spring(也许有一些很好的机制,我不知道它)。

2 个答案:

答案 0 :(得分:0)

如果您正在谈论数据库连接,那么只需使用连接保护程序,例如c3pohikariCPBoneCP等。不要重新发明轮子。

答案 1 :(得分:0)

看看HikariCP代码。具体来说,请看:

虽然HikariCP是一个数据库连接池,但您可以按原样使用ConcurrentBag,基本上按原样使用HouseKeeper,稍微修改PoolBagEntry,并从getConnection()和releaseConnection()中提取基本要点,以创建通用池。 / p>