遇到这个面试题,很好奇我的想法对不对。我们应该如何设计/编写一个连接池(即,一个将连接返回给用户的类,如果用户完成,将它们返回到池中)。 我的想法是以单例模式创建池,并有一个名为 Connection 的内部类。该池将包含一个连接对象数组,该连接对象有一个 bool 字段指示该连接是否可用(正在使用或不可用),并向该连接对象注册该池。当connection被用户调用close()时,connection会通知pool更新,可能像availableConnection一样,将connection中的isAvaiable改为true。
还有什么我应该添加的吗?我错过了什么吗?听起来对象池模式在这里可能很有用,但我不确定如何实现它。
如有任何帮助,我们将不胜感激。谢谢。
最佳答案
与其保留 bool 标志,不如维护两个列表,一个用于维护已使用的对象,另一个用于维护可用的对象。当使用的对象数量较少时,这使得搜索更容易。
然而,对象池模式在使用垃圾收集器的编程语言中并不是首选。 (大多数垃圾收集器扫描“活”对象引用,而不是这些对象用于其内容的内存。这意味着可以丢弃任何数量的没有引用的“死”对象,而成本很小。相比之下,保留大量“事件”但未使用的对象会增加垃圾收集的持续时间。)
关于algorithm - 我们应该如何设计/编写一个连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271580/