我需要将连接池连接到某些资源。实际资源对于此讨论并不重要。然而值得注意的是,这些连接不是线程安全的,因此需要将连接等池化为昂贵的操作。
我最初的想法是一个大池,它管理连接的超时并杀死它们等。但问题是每个连接可能包含一个不同的参数,因此在进行连接时,有必要传递参数并让pooler使用它来尝试查找具有相同值的连接。如果它(池)找不到对象,则需要创建一个传递参数的实例等。
然而,Apache Commons Pools和类似的库并没有为这种概念做任何规定。有没有包含这种概念的库。我想在Pool下面有一个实例列表,当收到请求时,它使用一些匹配器来循环其可用对象并返回匹配的第一个。
请注意,无法更新连接对象的参数,从而解决问题和问题的原因。
答案 0 :(得分:1)
为什么不先使用密钥找到池?然后使用其中一个可用的解决方案。我不认为你会通过尝试将所有内容集中在一起来简化任何事情,因为不同的键控项目不是交叉兼容的。
答案 1 :(得分:0)
如果对象不是线程安全的,为什么要汇集?无论如何,您的池管理员将无法检查状态/从其他线程关闭它们。
使用ThreadLocal
在每个帖子中保留一个副本。
答案 2 :(得分:0)
你能检查apache Pool中的KeyedObjectPool吗?
答案 3 :(得分:0)
KeyedObjectPool是答案,如果你想查看一个例子,请查看this