code: private void createCleaner() {
          if (cleanerThread == null) {
              int interval = getPropIntValue
                      (DB_DATASOURCE_CLEAN_INTERNAL_NAME,
                              DB_DATASOURCE_CLEAN_INTERNAL_DEFAULT_VALUE);
  
  
              //this runnable
              this.datasourceCleaner = new PooledDataSourceCleaner(this, interval);
              //submit it to the thread to run
              this.cleanerThread = new Thread(datasourceCleaner);
              this.cleanerThread.setDaemon(true);
              this.cleanerThread.start();
          }
      }
docs: create and start a pool cleaner if pooling is enabled.