当有人要求您在Java访谈中为连接池编写(做/描绘)设计时,您通常会写什么。

您为连接池编写代码还是描述类图。可以请人解释一下连接池的设计。

最佳答案

Mark Grand的“ Java模式”中对对象池模式(连接池是其中的一个特例)进行了详细描述。卷1'。

这是一个基本的类图(来自谷歌图片):

alt text http://img13.imageshack.us/img13/8448/poolz.png

主要思想:Client不应自己创建Reusable对象。与其相反,他应该使用ReusablePool。要获取Reusable对象,他应该调用acquireReusable。当他不再需要Reusable对象时,应将其放回槽中,调用releaseReusable

ReusablePool包含Reusable对象的列表。当Client要求提供Reusable时,池将查找现有的免费Reusable。如果获取了所有Reusable对象,则如果列表大小较小,则maxSize ReusablePool将再创建一个Reusable对象。当列表大小等于maxSize时,池不创建新的Reusable。取而代之的是,它一直等到其他客户端将任何Reusable对象还给他。

根据此描述,您可以得出2个结论:


Reusable对象不应具有状态(或应在releaseReusable方法中“清除”其状态)
ReusablePool通常是多线程应用程序的一部分,其所有方法中的所有同步内容都应以适当的方式实现(这不是一件容易的事)。

09-17 05:11