diff options
Diffstat (limited to 'test/files/jvm/actor-executor3.scala')
-rw-r--r-- | test/files/jvm/actor-executor3.scala | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/files/jvm/actor-executor3.scala b/test/files/jvm/actor-executor3.scala new file mode 100644 index 0000000000..bf060b8ac5 --- /dev/null +++ b/test/files/jvm/actor-executor3.scala @@ -0,0 +1,52 @@ +import scala.actors.Actor +import scala.actors.scheduler.ExecutorScheduler +import java.util.concurrent.Executors + +object One extends AdaptedActor { + def act() { + Two.start() + var i = 0 + loopWhile (i < Test.NUM_MSG) { + i += 1 + Two ! 'MsgForTwo + react { + case 'MsgForOne => + if (i % (Test.NUM_MSG/10) == 0) + println("One: OK") + } + } + } +} + +object Two extends AdaptedActor { + def act() { + var i = 0 + loopWhile (i < Test.NUM_MSG) { + i += 1 + react { + case 'MsgForTwo => + if (i % (Test.NUM_MSG/10) == 0) + println("Two: OK") + One ! 'MsgForOne + } + } + } +} + +trait AdaptedActor extends Actor { + override def scheduler = + Test.scheduler +} + +object Test { + val NUM_MSG = 100000 + + val executor = + Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()) + + val scheduler = ExecutorScheduler(executor) + + def main(args: Array[String]) { + One.start() + } +} |