说说bonecp,数据库连接池,先来张图:
其实池化这种技术方案,有很多应用,常见的DB连接池、线程池、对象池,比如bonecp、jdk的threadPoolExecotor、tomcat里的processorPool等等;
创建需要较多资源,你需要提前创建,并且进行管理,来保提高序运行的效率。
bonecp的源码给人的感觉蛮简洁,她是多线程的,由PoolWatchThread等后台线程维护连接池,大量应用了Concurrent类库;
连接池并发方面,使用ConnectionPartion,减少锁粒度,就类似ConcurrentHashMap里的Segment段锁,上图:
多线程并发方面,涉及cpu缓存、内存模型、指令重排,以及临界区、线程协作等等方面,看着volidate、syschronized、AQS、CAS,以及lock、concurrent等并发类库;
现在actor并发模型的Akka,java8又有了forkJoin,是不是好多,认不过来了都,作为老板的你,得协调这些人干活,我已经开始慌了。