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