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

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

package org.specs2
package control

import java.util.concurrent.atomic.AtomicInteger
import concurrent.forkjoin.ForkJoinPool.ForkJoinWorkerThreadFactory
import concurrent.forkjoin.ForkJoinPool

private[specs2]
case class NamedForkJoinWorkerThreadFactory(namePrefix: String,
                                            priority: Int = Thread.currentThread.getPriority) extends ForkJoinWorkerThreadFactory {

  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)

  private lazy val delegate = ForkJoinPool.defaultForkJoinWorkerThreadFactory

  def newThread(pool: ForkJoinPool) = {
    val t = delegate.newThread(pool)
    t.setName(namePrefix+"-"+threadNumber.getAndIncrement)
    t.setPriority(priority)
    t
  }
}

object NamedForkJoinWorkerThreadFactory {
  val specs2 = NamedForkJoinWorkerThreadFactory("specs2")
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy