summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/io/package.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/io/package.scala')
-rw-r--r--src/compiler/scala/tools/nsc/io/package.scala14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/io/package.scala b/src/compiler/scala/tools/nsc/io/package.scala
index 1d484a6c0e..8534e92f27 100644
--- a/src/compiler/scala/tools/nsc/io/package.scala
+++ b/src/compiler/scala/tools/nsc/io/package.scala
@@ -5,7 +5,7 @@
package scala.tools.nsc
-import java.util.concurrent.{ Future, Callable, Executors }
+import java.util.concurrent.{ Future, Callable, Executors, ThreadFactory }
import java.util.{ Timer, TimerTask }
package object io {
@@ -17,6 +17,18 @@ package object io {
def callableFn[T](f: () => T): Callable[T] = callable(f())
def spawnFn[T](f: () => T): Future[T] = spawn(f())
+ def newSingleThreadDaemonExecutor() = {
+ val factory = new ThreadFactory {
+ val default = Executors.defaultThreadFactory()
+ def newThread(r: Runnable) = {
+ val t = default.newThread(r)
+ t setDaemon true
+ t
+ }
+ }
+ Executors.newSingleThreadExecutor(factory)
+ }
+
// Create, start, and return a background thread
// If isDaemon is true, it is marked as daemon (and will not interfere with JVM shutdown)
def daemonize(isDaemon: Boolean)(body: => Unit): Thread = {