![]() |
![]() |
![]() |
スケジューラ | 目次 |
Reactor(またはその子クラスのインスタンス)は、スケジューラ (scheduler) により実行される。Reactor トレイトは、そのインスタンスを実行するのに使われるスケジューラを返す scheduler メンバーを導入する。
def scheduler: IScheduler
実行時のシステムは、 IScheduler に定義される execute メソッドのどれかにタスクを提出することでアクターを実行する。このトレイトの他のメソッドのほとんどが必要になるのは、一から新しいスケジューラを実装しているときぐらいで、新しいスケジューラが必要になることは稀だ。
Reactor や Actor の実行に使われるデフォルトのスケジューラは、全てのアクターが実行を終了すると、その状況を把握する。これが起こるとスケジューラは、使っているスレッドを終了した後、自身をシャットダウンする。しかし、 (scheduler パッケージの)SingleThreadedScheduler のように、明示的に shutdown メソッドを呼び出すことでシャットダウンさせる必要のあるスケジューラもある。
独自のスケジューラを作成するのに最も手軽な方法は SchedulerAdapter を継承して、以下の抽象メンバーを実装することだ。
def execute(fun: => Unit): Unit
典型的な実装では、名前渡しの引数 fun はスレッドプールを用いて実行される。
![]() |
![]() |
![]() |
スケジューラ | 目次 |