是否有任何池解决方案允许将密钥传递给acquire / take方法

时间:2011-01-14 02:53:51

标签: java pool

我需要将连接池连接到某些资源。实际资源对于此讨论并不重要。然而值得注意的是,这些连接不是线程安全的,因此需要将连接等池化为昂贵的操作。

我最初的想法是一个大池,它管理连接的超时并杀死它们等。但问题是每个连接可能包含一个不同的参数,因此在进行连接时,有必要传递参数并让pooler使用它来尝试查找具有相同值的连接。如果它(池)找不到对象,则需要创建一个传递参数的实例等。

然而,Apache Commons Pools和类似的库并没有为这种概念做任何规定。有没有包含这种概念的库。我想在Pool下面有一个实例列表,当收到请求时,它使用一些匹配器来循环其可用对象并返回匹配的第一个。

请注意,无法更新连接对象的参数,从而解决问题和问题的原因。

  • 有没有更好的方法来解决这个问题?
  • 是否存在执行上述操作的池库?
  • 我应该自己写一个吗?

4 个答案:

答案 0 :(得分:1)

为什么不先使用密钥找到池?然后使用其中一个可用的解决方案。我不认为你会通过尝试将所有内容集中在一起来简化任何事情,因为不同的键控项目不是交叉兼容的。

答案 1 :(得分:0)

如果对象不是线程安全的,为什么要汇集?无论如何,您的池管理员将无法检查状态/从其他线程关闭它们。

使用ThreadLocal在每个帖子中保留一个副本。

答案 2 :(得分:0)

你能检查apache Pool中的KeyedObjectPool吗?

答案 3 :(得分:0)

KeyedObjectPool是答案,如果你想查看一个例子,请查看this