Skip to content

Instantly share code, notes, and snippets.

@kmizu
Created October 29, 2011 17:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmizu/1324774 to your computer and use it in GitHub Desktop.
Save kmizu/1324774 to your computer and use it in GitHub Desktop.
Experiments about scala.actors.Actor
import scala.actors.Actor._
//All `self` references to the same ActorProxy.
println(self)
Thread.sleep(1000)
println(self)
Thread.sleep(1000)
println(self)
//It terminates successfully (Scala 2.8.1.final and Scala 2.9.1.final).
self ! "Hello"
self receive { case x => println(x) }
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.actors.Actor._
import scala.actors.Actor._
scala> self
res0: scala.actors.Actor = scala.actors.ActorProxy@65370ce9
scala> self
res1: scala.actors.Actor = scala.actors.ActorProxy@15f6ae4d // Different ActorProxy is generated !!
scala> self
res2: scala.actors.Actor = scala.actors.ActorProxy@23ebe8ec
scala> self
res3: scala.actors.Actor = scala.actors.ActorProxy@16e3a921
scala> Thread.currentThread
res4: java.lang.Thread = Thread[Thread-9,5,main]
scala> Thread.currentThread
res5: java.lang.Thread = Thread[Thread-10,5,main] // res5's thread is not res4's thread !
scala> Thread.currentThread
res6: java.lang.Thread = Thread[Thread-11,5,main]
scala> Thread.currentThread
res7: java.lang.Thread = Thread[Thread-12,5,main]
scala> self ! "Hello"
scala> self receive { case x => println(x) } // It never terminates.
Welcome to Scala version 2.10.0.r25900-b20111028020141 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.actors.Actor._
import scala.actors.Actor._
scala> self
res0: scala.actors.Actor = scala.actors.ActorProxy@5af6e15e
scala> self
res1: scala.actors.Actor = scala.actors.ActorProxy@2a8d1749
scala> self
res2: scala.actors.Actor = scala.actors.ActorProxy@5fdbe72f
scala> self
res3: scala.actors.Actor = scala.actors.ActorProxy@5290288e
scala> self ! "Hello"
scala> self receive { case x => println(x) } // It never terminates same as Scala 2.9.1.final
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.actors.Actor._
import scala.actors.Actor._
scala> self
res0: scala.actors.Actor = scala.actors.ActorProxy@2de8396e
scala> self
res1: scala.actors.Actor = scala.actors.ActorProxy@2161fcdd
scala> { self ! "Hello"; self receive { case x => println(x) } } // It terminates successfully if they are executed in one block !
Hello
scala> { println(self); Thread.sleep(3000); println(self) }
scala.actors.ActorProxy@62b92956
scala.actors.ActorProxy@62b92956
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment