Scala のアクター API に基づいてタイマーを実装しようとしました。現在の Thread アクター (Actor.self) をタイマーとして使用し、時間内に完了する必要がある作業を実行する匿名のアクターを使用しました。次のScalaプログラムがあります
import scala.actors.Actor.self
import scala.actors.TIMEOUT
object Main {
def main(args: Array[String]): Unit = {
val thiz = self
actor {
// do heavy work here
thiz ! "finish"
}
self.reactWithin(1000) {
case "finish" => println("complete")
case TIMEOUT => println("timeout")
}
}
}
プログラムを実行すると、受け取った
Exception in thread "main" scala.actors.SuspendActorControl
scala.actors.ActorProxy@1d99a4d: caught java.lang.InterruptedException
問題を克服する方法を教えてください。