summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-01-30 16:57:28 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-01-30 16:57:28 +0000
commitb5e97c54fd79fcc160c521b34d08194000acd12c (patch)
tree958c4ac34199926133e40f930373e53062700711 /src
parentc9365b9f14a7a91c9223e0b456b5ecbd46bf1e5a (diff)
downloadscala-b5e97c54fd79fcc160c521b34d08194000acd12c.tar.gz
scala-b5e97c54fd79fcc160c521b34d08194000acd12c.tar.bz2
scala-b5e97c54fd79fcc160c521b34d08194000acd12c.zip
Fixed #1652.
Diffstat (limited to 'src')
-rw-r--r--src/actors/scala/actors/Actor.scala12
-rw-r--r--src/actors/scala/actors/FJTaskScheduler2.scala5
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 = {