我需要池连接到某些资源。实际的资源对于这个讨论并不重要。但值得注意的是,这些连接并不是线程安全的,因此需要将连接池等作为一个昂贵的操作。是否有任何池中的解决方案,允许一个密钥传递到获取/采取方法
我最初的想法是为一个大池管理超时连接并杀死它们等等。然而,问题是每个连接可能包含一个不同的参数,因此在进行连接时需要传递参数并让池使用它试图找到具有相同值的连接。如果它(池)找不到对象,那么它需要创建一个实例来传递参数等。
但是Apache Commons Pools和其他类似的库没有为这种概念提供任何规定。有没有包含这种概念的图书馆?我想在Pool下面有一个实例列表,当一个请求进来时,它使用一些匹配器遍历它的可用对象并返回匹配的第一个。
请注意,不可能修改连接对象的参数,因此问题和问题原因被问到。
- 有没有更好的方法来解决这个问题?
- 有没有一个共享库,做到了上述?
- 我应该写我自己的?
为什么你就不能配置差异参数差异池。有一个门面可以访问所有这些泳池。如果外观知道给定的输入参数没有池,那么它将在飞行中创建一个 – 2011-01-14 03:04:57
因为有太多不同的参数,这将意味着大量和大量的池。正如我在其他评论中提到的 - 我相信Apache公共池并不便宜,因为每个池都创建自己的清理线程。从我的快速查看来看,似乎并没有一种简单的方法让ACP共享清理线程,因此每个池创建或多或少都是一个廉价的队列,具有后台清理线程和生命周期管理功能。 – 2011-01-14 03:16:09