aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/package.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-05-21 14:05:05 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-05-21 14:05:05 +0200
commit105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8 (patch)
treec09b6644a14032b3c636cc7dbc6e225ca3256e85 /kamon-core/src/main/scala/kamon/package.scala
parente1e7853255131f26702229735e37e160c38f2d08 (diff)
downloadKamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.tar.gz
Kamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.tar.bz2
Kamon-105ed9cb264eb3569b5ae0d65ac2fd8cb636f8e8.zip
wip, trying to get something that could be tested
Diffstat (limited to 'kamon-core/src/main/scala/kamon/package.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/package.scala30
1 files changed, 30 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/package.scala b/kamon-core/src/main/scala/kamon/package.scala
index 92c48017..b65022bc 100644
--- a/kamon-core/src/main/scala/kamon/package.scala
+++ b/kamon-core/src/main/scala/kamon/package.scala
@@ -1,3 +1,6 @@
+import java.util.concurrent.atomic.AtomicLong
+import java.util.concurrent.{Executors, ThreadFactory}
+
import com.typesafe.config.Config
import scala.collection.concurrent.TrieMap
@@ -7,6 +10,33 @@ package object kamon {
/**
+ * Creates a thread factory that assigns the specified name to all created Threads.
+ */
+ def threadFactory(name: String): ThreadFactory =
+ new ThreadFactory {
+ val defaultFactory = Executors.defaultThreadFactory()
+
+ override def newThread(r: Runnable): Thread = {
+ val thread = defaultFactory.newThread(r)
+ thread.setName(name)
+ thread
+ }
+ }
+
+ def numberedThreadFactory(name: String): ThreadFactory =
+ new ThreadFactory {
+ val count = new AtomicLong()
+ val defaultFactory = Executors.defaultThreadFactory()
+
+ override def newThread(r: Runnable): Thread = {
+ val thread = defaultFactory.newThread(r)
+ thread.setName(name + "-" + count.incrementAndGet().toString)
+ thread
+ }
+ }
+
+
+ /**
* Workaround to the non thread-safe [[scala.collection.concurrent.TrieMap#getOrElseUpdate()]] method. More details on
* why this is necessary can be found at [[https://issues.scala-lang.org/browse/SI-7943]].
*/