模板方法模式+多例模式

最近看了设计模式和锁的一些知识,就想着自己写点什么巩固一下知识。

然后就随便写了一个类似(也许不像)连接池的这么一个demo。

定义一个连接类 Connection,用户查询操作,里边有

image

这样几个方法,刚开始在池中是直接用isFree()判断状态,然后在用setState()方法改变状态的,发现这样不好保证原子操作,所以增加了checkAndSetStates()方法。

定义函数式接口 Content(用于接收连接后的具体查询操作):

image

定义连接池 Pool:

image

execute()方法 中使用try finally 代码段,保证线程出错,仍会归还连接。

getCon()方法使用自旋的方式,减少不必要的上下文切换,等待获取空闲连接。

构造函数初始化连接池大小:

image

源代码放在了我的gitee仓库里,这个仓库里边还有我总结的一些设计模式的demo,有兴趣的小伙伴可以看看,可以让你更加轻松的理解设计模式!
git地址:https://gitee.com/watermelon_x/design_pattern.git
博客地址:https://wmelon.cn/200.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容