From acf89aafe568f76a44ddb0e44ca91f8180d1d825 Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Thu, 4 Mar 2010 11:40:16 +0000 Subject: Clean-ups in scheduler hierarchy. --- test/files/jvm/actor-executor.scala | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 test/files/jvm/actor-executor.scala (limited to 'test/files/jvm/actor-executor.scala') diff --git a/test/files/jvm/actor-executor.scala b/test/files/jvm/actor-executor.scala new file mode 100644 index 0000000000..e650043382 --- /dev/null +++ b/test/files/jvm/actor-executor.scala @@ -0,0 +1,59 @@ +import java.util.concurrent.Executors +import scala.actors.{Actor, SchedulerAdapter} +import Actor._ + +trait AdaptedActor extends Actor { + override def scheduler = + Test.scheduler +} + +object One extends AdaptedActor { + def act() { + Two.start() + var i = 0 + loopWhile (i < 10000) { + i += 1 + Two ! 'MsgForTwo + react { + case 'MsgForOne => + if (i % 1000 == 0) + println("One: OK") + if (i == 10000) + Test.executor.shutdown() + } + } + } +} + +object Two extends AdaptedActor { + def act() { + var i = 0 + loopWhile (i < 10000) { + i += 1 + react { + case 'MsgForTwo => + if (i % 1000 == 0) + println("Two: OK") + One ! 'MsgForOne + } + } + } +} + +object Test { + val executor = + Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()) + + val scheduler = + new SchedulerAdapter { + def execute(block: => Unit) { + executor.execute(new Runnable { + def run() { block } + }) + } + } + + def main(args: Array[String]) { + One.start() + } +} -- cgit v1.2.3