// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab

package org.mariadb.jdbc.pool;

import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;

/** Pool thread factory */
public class PoolThreadFactory implements java.util.concurrent.ThreadFactory {

  // start from DefaultThread factory to get security groups and what not
  private final java.util.concurrent.ThreadFactory parentFactory = Executors.defaultThreadFactory();
  private final AtomicInteger threadId = new AtomicInteger();
  private final String threadName;

  /**
   * Constructor
   *
   * @param threadName thread name
   */
  public PoolThreadFactory(String threadName) {
    this.threadName = threadName;
  }

  @Override
  public Thread newThread(Runnable runnable) {
    Thread result = parentFactory.newThread(runnable);
    result.setName(threadName + "-" + threadId.incrementAndGet());
    result.setDaemon(true); // set as daemon so that mariaDb won't hold up shutdown

    return result;
  }
}
