参考文献
分析
参考文献1是一个用java实现的数据库连接池,可以参考其代码实现,最好也看看java源代码是怎么实现数据库连接池的,两者进行比较。
参考文献2中提到了动态代理,之前写过的一片博客:设计模式之代理模式之二(Proxy)中也讲到了动态代理,这里可以参考一下。
下面首先给出参考1中的代码示例,具体见ConnectionPool.java,修改了部门代码与注释,并该处了一个测试demo,具体见ConnectionPoolDemo.java:
ConnectionPool.java
View Code
ConnectionPoolDemo.java
View Code
运行结果如下:
View Code
ConnectionPool的类图结构如下图所示:
参考之前写singleton的时候,不适用同步方法,而是使用二次加锁的方式来使用synchronized。考虑此处是否可以使用二次加锁。
在synchronized代码块中加锁是对整个对象加锁了,扩大了锁的粒度。是否是现在的对方法加锁更优。
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/05/24/2516249.html,如需转载请自行联系原作者