diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-01-30 18:12:14 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-01-30 18:12:14 +0000 |
commit | 68389103114d3a87ca82d87685903af1d3dbe9ac (patch) | |
tree | 3a271b2c697e800a8900a159649fb28a8260f605 /src/actors | |
parent | dcb611298e0dd4d98d49bbe5100595d403d68397 (diff) | |
download | scala-68389103114d3a87ca82d87685903af1d3dbe9ac.tar.gz scala-68389103114d3a87ca82d87685903af1d3dbe9ac.tar.bz2 scala-68389103114d3a87ca82d87685903af1d3dbe9ac.zip |
Fixed #1451.
Diffstat (limited to 'src/actors')
-rw-r--r-- | src/actors/scala/actors/FJTaskScheduler2.scala | 8 | ||||
-rw-r--r-- | src/actors/scala/actors/Future.scala | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/actors/scala/actors/FJTaskScheduler2.scala b/src/actors/scala/actors/FJTaskScheduler2.scala index 2880a1d9c4..21915eb1a3 100644 --- a/src/actors/scala/actors/FJTaskScheduler2.scala +++ b/src/actors/scala/actors/FJTaskScheduler2.scala @@ -24,9 +24,11 @@ import scala.collection.mutable.{ArrayBuffer, Buffer, HashMap, Queue, Stack, Has * @version 0.9.18 * @author Philipp Haller */ -class FJTaskScheduler2 extends Thread with IScheduler { - // as long as this thread runs, JVM should not exit - setDaemon(false) +class FJTaskScheduler2(daemon: Boolean) extends Thread with IScheduler { + setDaemon(daemon) + + def this() = + this(false) var printStats = false diff --git a/src/actors/scala/actors/Future.scala b/src/actors/scala/actors/Future.scala index 7f6d3f3300..e7ba7573e2 100644 --- a/src/actors/scala/actors/Future.scala +++ b/src/actors/scala/actors/Future.scala @@ -38,13 +38,19 @@ abstract class Future[+T](val ch: InputChannel[Any]) extends Responder[T] with F */ object Futures { + private val sched = new FJTaskScheduler2(true) + def future[T](body: => T): Future[T] = { case object Eval - val a = Actor.actor { - Actor.react { - case Eval => Actor.reply(body) + val a = new Actor { + override def scheduler: IScheduler = sched + def act() { + Actor.react { + case Eval => Actor.reply(body) + } } } + a.start() a !! (Eval, { case any => any.asInstanceOf[T] }) } |