我们应该如何设计/编写连接池

时间:2014-01-21 23:58:52

标签: algorithm oop data-structures

我遇到了这个面试问题,如果我的想法是对的,我很好奇。我们应该如何设计/编写连接池(即,返回与用户的连接的类,如果用户完成,则将它们返回到池中)。 我的想法是以Singleton模式创建池,并有一个名为Connection的内部类。池将包含一个连接对象数组,哪个连接对象有一个布尔字段指示连接是否可用(是否使用),并使用连接对象注册池。当用户调用close()连接时,connection会通知池更新,可能就像availableConnection一样,并且在连接中将isAvaiable更改为true。

还有什么我应该添加的东西吗?我错过了什么吗?听起来像对象池模式在这里可能很有用,但我不确定如何实现它。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

不是保留布尔标志,而是维护两个列表,一个用于维护已使用的对象,另一个用于可用对象。这使得当使用对象的数量很少时,搜索更容易。

但是,在使用垃圾收集器的编程语言中,对象池模式不是首选。 (大多数垃圾收集器扫描“实时”对象引用,而不是这些对象用于其内容的内存。这意味着任何数量的没有引用的“死”对象都可以以很少的成本被丢弃。相反,保留大量的垃圾收集器。 “live”但未使用的对象会增加垃圾收集的持续时间。)