diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-01-30 16:57:28 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-01-30 16:57:28 +0000 |
commit | b5e97c54fd79fcc160c521b34d08194000acd12c (patch) | |
tree | 958c4ac34199926133e40f930373e53062700711 /src/actors | |
parent | c9365b9f14a7a91c9223e0b456b5ecbd46bf1e5a (diff) | |
download | scala-b5e97c54fd79fcc160c521b34d08194000acd12c.tar.gz scala-b5e97c54fd79fcc160c521b34d08194000acd12c.tar.bz2 scala-b5e97c54fd79fcc160c521b34d08194000acd12c.zip |
Fixed #1652.
Diffstat (limited to 'src/actors')
-rw-r--r-- | src/actors/scala/actors/Actor.scala | 12 | ||||
-rw-r--r-- | src/actors/scala/actors/FJTaskScheduler2.scala | 5 |
2 files changed, 3 insertions, 14 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index 967e5c758b..e332d9fe13 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -28,7 +28,8 @@ object Actor { private[actors] val tl = new ThreadLocal[Actor] - private[actors] var timer = new Timer + // timer thread runs as daemon + private[actors] val timer = new Timer(true) /** * Returns the currently executing actor. Should be used instead @@ -554,18 +555,11 @@ trait Actor extends AbstractActor { } else { waitingFor = f.isDefinedAt - val thisActor = this onTimeout = Some(new TimerTask { def run() { thisActor.send(TIMEOUT, thisActor) } }) - try { - Actor.timer.schedule(onTimeout.get, msec) - } catch { - case ise: IllegalStateException => - Actor.timer = new Timer - Actor.timer.schedule(onTimeout.get, msec) - } + Actor.timer.schedule(onTimeout.get, msec) continuation = f isDetached = true } diff --git a/src/actors/scala/actors/FJTaskScheduler2.scala b/src/actors/scala/actors/FJTaskScheduler2.scala index 096f703ddd..2880a1d9c4 100644 --- a/src/actors/scala/actors/FJTaskScheduler2.scala +++ b/src/actors/scala/actors/FJTaskScheduler2.scala @@ -129,9 +129,6 @@ class FJTaskScheduler2 extends Thread with IScheduler { // the FJTaskRunnerGroup since there is // no separate thread associated with it, // and FJTaskRunner threads have daemon status. - - // terminate timer thread - Actor.timer.cancel() throw new QuitException } } @@ -162,8 +159,6 @@ class FJTaskScheduler2 extends Thread with IScheduler { */ def shutdown(): Unit = synchronized { terminating = true - // terminate timer thread - Actor.timer.cancel() } def snapshot(): LinkedQueue = { |