예제 #1
0
  /**
   * Prefills the id generators.
   *
   * @param datasource the datasource to use
   * @since $version
   * @author hceylan
   */
  public void preFillGenerators(DataSource datasource) {
    final int nThreads = Runtime.getRuntime().availableProcessors();

    this.idGeneratorExecuter =
        new ThreadPoolExecutor(
            1,
            nThreads, //
            30,
            TimeUnit.SECONDS, //
            new LinkedBlockingQueue<Runnable>(), //
            new GeneratorThreadFactory());

    for (final SequenceGenerator generator : this.sequenceGenerators.values()) {
      this.sequenceQueues.put(
          generator.getName(),
          new SequenceQueue(
              this.jdbcAdaptor,
              datasource,
              this.idGeneratorExecuter,
              generator.getSequenceName(),
              generator.getAllocationSize()));
    }

    for (final TableGenerator generator : this.tableGenerators.values()) {
      this.tableIdQueues.put(
          generator.getName(),
          new TableIdQueue(this.jdbcAdaptor, datasource, this.idGeneratorExecuter, generator));
    }
  }