开局之前

好像是这个连接池 很多都没用jdk的,比如ArrayList 他觉得ArrayList扩容太费时间了

为什么快
而宏观上主要是和两个数据结构有关,

FastList

存储执行完数据库操作的Statement resultSet

优化点

  1. remove是逆序的
  2. 不需要越界检查

    阻塞队列ConcurrentBag。

ConcurrentBag 中最关键的属性有 4 个,分别是
用于存储所有的数据库连接的共享队列 sharedList、
线程本地存储 threadList、
等待数据库连接的线程数 waiters
分配数据库连接的工具 handoffQueue。

原理有点复杂,还夹杂了CAS 困了

ps

SynchronousQueue 这货原来这么有用啊。。读线程池源码的时候 觉得这货平平无奇。原来是传递数据用的。。