summaryrefslogtreecommitdiff
path: root/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-11-09 15:01:17 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-11-09 15:01:17 +0000
commit6debb6aa08d0ad76c33b493511d12b251f4a4fba (patch)
tree066a00be341154f58ab61b6775f5b9c1dd27d1d9 /src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala
parente7749823a7a69f4f37af9b91e0fed50f143576a0 (diff)
downloadscala-6debb6aa08d0ad76c33b493511d12b251f4a4fba.tar.gz
scala-6debb6aa08d0ad76c33b493511d12b251f4a4fba.tar.bz2
scala-6debb6aa08d0ad76c33b493511d12b251f4a4fba.zip
Fixed DaemonScheduler on IBM J9.
Diffstat (limited to 'src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala')
-rw-r--r--src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala
index 3433e51fdc..e9044ca268 100644
--- a/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala
+++ b/src/actors/scala/actors/scheduler/ResizableThreadPoolScheduler.scala
@@ -10,7 +10,8 @@
package scala.actors.scheduler
-import scala.actors.threadpool.{ThreadPoolExecutor, TimeUnit, LinkedBlockingQueue}
+import scala.actors.threadpool.{ThreadPoolExecutor, TimeUnit, LinkedBlockingQueue,
+ ThreadFactory}
import scala.actors.{Debug, IScheduler}
import scala.concurrent.ManagedBlocker
@@ -48,6 +49,15 @@ class ResizableThreadPoolScheduler(protected val terminate: Boolean,
protected val CHECK_FREQ = 10
+ private class DaemonThreadFactory extends ThreadFactory {
+ def newThread(r: Runnable): Thread = {
+ val t = new Thread(r)
+ t.setDaemon(daemon)
+ t
+ }
+ }
+ private val threadFac = new DaemonThreadFactory
+
private def makeNewPool(): ThreadPoolExecutor = {
val workQueue = new LinkedBlockingQueue
new ThreadPoolExecutor(coreSize,
@@ -55,6 +65,7 @@ class ResizableThreadPoolScheduler(protected val terminate: Boolean,
60000L,
TimeUnit.MILLISECONDS,
workQueue,
+ threadFac,
new ThreadPoolExecutor.CallerRunsPolicy)
}