1

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

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

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

请注意,无法更改连接对象的参数,因此无法更改问题和提出问题的原因。

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

4 回答 4

1

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

于 2011-01-14T03:03:54.690 回答
0

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

只需在每个线程中使用ThreadLocal.

于 2011-01-14T03:03:56.560 回答
0

你能检查apache Pool 中的KeyedObjectPool吗?

于 2011-02-01T03:25:07.377 回答
0

KeyedObjectPool 是答案,如果你想看一个例子,看看这个

于 2013-02-12T20:15:15.497 回答