理论教育 Scala语言基础与开发实战:深入了解派发器类型

Scala语言基础与开发实战:深入了解派发器类型

时间:2023-11-24 理论教育 版权反馈
【摘要】:下面将对4种Dispatcher分别介绍。默认Dispatcher的工作原理如图11-1所示。图11-1Dispatcher工作原理图2.Pinned Dispatcher这种类型的Dispatcher为每一个Actor提供一个单一的、专用的线程。这种阻塞型的操作在性能上要比默认的Dispatcher好。图11-3Balancing Dispatcher工作原理图4.Calling Thread Dispatcher这种类型的Dispatcher主要用于测试,并且在当前线程中运行任务,不会创建新的线程。

Scala语言基础与开发实战:深入了解派发器类型

下面将对4种Dispatcher分别介绍。

1.Dispatcher

Dispatcher是Akka中默认的派发器,这是一种基于事件的分发器,该派发器绑定一组Actor到线程池中,下面是Dispatcher的一些特性。

●每一个Actor都有自己的邮箱。

●该Dispatcher可以被任意数量的Actor共享。

●该Dispatcher可以由ThreadPoolExecutor或ForkJoinPool提供支持。

●该Dispatcher是非阻塞的。

默认Dispatcher的工作原理如图11-1所示。

978-7-111-54169-1-Chapter11-3.jpg

图11-1 Dispatcher工作原理图

2.Pinned Dispatcher

这种类型的Dispatcher为每一个Actor提供一个单一的、专用的线程。这种做法在I/O操作或者长时间运行的计算中是非常有用的,下面是Pinned Dispatcher的特点。

●每一个Actor都有自己的邮箱。

●每一个Actor都有专用的线程,该线程不能和其他Actor共享。

●这种Dispatcher有一个Executor线程池。

●这种Dispatcher在阻塞操作上进行了优化。例如,如果程序正在进行I/O操作,那么

这个Actor将会等到任务执行完成。这种阻塞型的操作在性能上要比默认的Dispatcher好。(www.daowen.com)

Pinned Dispatcher工作原理如图11-2所示。

3.Balancing Dispatcher

这是一种基于事件的Dispatcher,它会将任务比较多的Actor的任务重新分发到比较闲的Actor上运行。下面是Balancing Dispatcher的特点。

978-7-111-54169-1-Chapter11-4.jpg

图11-2 Pinned Dispatcher工作原理

●所有Actor共用一个邮箱。

●该Dispatcher只能被同一种类型的Actor共享。

●该Dispatcher可以由ThreadPoolExecutor或ForkJoinPool提供支持。

Balancing Dispatcher原理如图11-3所示。

978-7-111-54169-1-Chapter11-5.jpg

图11-3 Balancing Dispatcher工作原理图

4.Calling Thread Dispatcher

这种类型的Dispatcher主要用于测试,并且在当前线程中运行任务,不会创建新的线程。主要有以下特点:

●每一个Actor都有自己的邮箱。

●该Dispatcher可以被任意数量的Actor共享。

●该Dispatcher由调用线程支持。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈