1. 数量很大的DruidDataSource使用场景

缺省情况下,一个DruidDataSource会使用两个线程分别用于创建连接和销毁或检测连接。在分库分表的某些场景,可能需要数百甚至数千个数据库,因此会创建大量的线程。

2. 相关配置

DruidDataSource提供了createScheduler和destroyScheduler这两个配置,用于多个DruidDataSource公用创建连接池和销毁连接池。

  1. ScheduledExecutorService createScheduler = ...;
  2. ScheduledExecutorService destroyScheduler = ...;
  3.  
  4. DruidDataSource ds0 = ...;
  5. DruidDataSource ds1 = ...;
  6.  
  7. ds0.setCreateScheduler(createScheduler);
  8. ds1.setCreateScheduler(createScheduler);
  9.  
  10. ds0.setDestroyScheduler(destroyScheduler);
  11. ds1.setDestroyScheduler(destroyScheduler);