All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.specs2.control.NamedThreadFactory.scala Maven / Gradle / Ivy

There is a newer version: 3.7
Show newest version
package org.specs2
package control

import java.util.concurrent.ThreadFactory
import java.util.concurrent.atomic.AtomicInteger

/**
 * This factory creates named threads which can be prefixed by "specs2" to get a better understanding of thread dumps
 *
 * Contributed by @jedws
 */
private[specs2]
case class NamedThreadFactory(namePrefix: String,
                              group: ThreadGroup = Thread.currentThread.getThreadGroup,
                              priority: Int = Thread.currentThread.getPriority) extends ThreadFactory {

  private[this] val threadNumber = new AtomicInteger(1)

  require(priority >= Thread.MIN_PRIORITY, "priority too low: " + priority)
  require(priority <= Thread.MAX_PRIORITY, "priority too high: " + priority)

  def newThread(r: Runnable) = {
    val t = new Thread(group, r, namePrefix+"-"+threadNumber.getAndIncrement, 0)
    t.setPriority(priority)
    t
  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy