西瓜の

-人类是因为记录才进入文明-

2020/04/20
21:38
technology

模板方法模式+多例模式

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

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

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

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

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

定义连接池 Pool:

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

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

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

源代码放在了我的gitee仓库里,这个仓库里边还有我总结的一些设计模式的demo,有兴趣的小伙伴可以看看,可以让你更加轻松的理解设计模式!

https://gitee.com/watermelon_x/design_pattern.git