2016-08-19 4 views
1

私はAkka Schedulerを探そうとしています。私の前提として、スケジューラは別のスレッドで特定の時間内にスケジュールされたタスクを実行します。 documentationによれば、スケジューラ内のオブジェクトはRunnableです。これは明らかではありません。なぜ彼らはRunnableオブジェクトを使用し、呼び出しなしでstart()を実行可能にすると、新しいスレッドスタックは生成されません。またはSchedulerはスケジュールされたタスクを実行するためのseptateスレッドを作成しませんか?Akka Scheduler:akkaスケジューラの仕組みは?

akkaスケジューラはどのように動作しますか?この貫通

答えて

-1

ゴー:Runnableにはstart()はありません http://manuel.bernhardt.io/2014/04/23/a-handful-akka-techniques/

+0

慎重に私の質問を読んで、私が知りたいのは、スケジューラの仕組みとschdulerでのスレッドの管理の仕方です。 –

+0

ジョブバケットスケジューラに基づいています。 2つのリンクが例とより多くの内部リンクを提供することを示します。だから私はそのリンクを含めるのです。 –

0

http://doc.akka.io/docs/akka/snapshot/java/scheduler.html

もこれを試してみてください。あなたはThreadRunnableを混ぜています。 フードの下でSchedulerDispatcherを使用しています。これは簡略化するために、一部のThreadPoolの上にあるakkaレイヤーとして表示できます。あなたのタスクを実行するために、akkaはこのプールにあなたの仕事(Runnable)を提出し、のプールに仕事のrun()メソッドを呼び出します。私はAkka Scheduler使用する場合

2

が、私はより多くの知識を得るためにソースコードを研究しようとした - https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/actor/Scheduler.scala

あなたが見ることができるように、Akka SchedulerRunnable新しいonvokeする暗黙のパラメータとして(ForkJoinPool下ラッパー)ExecutorContectを使用し、別のメッセージを送信しますreceiver ! messageを介してfire and forgetパターンを利用することにより、

Cancellable(スケジュールされた操作の実行をキャンセルすることができます)は、FiniteDuration(遅延時間の設定が可能です)であり、スケジューリングプロセスに関連するほとんどの方法で使用されます例えばscheduleOnce、私は俳優間の時間同期のためにこれを使用しました)

+0

状況を明確にしましたか? – pacman