Scala 调度程序 - 将一组 Actor 绑定到一组预定义的线程



我正在使用Akka。我正在尝试研究如何绑定一组参与者(数千个),以便每个独特的参与者都由同一线程处理。例如,我的操作系统有 24 个本机线程,我有 1000 个参与者,每个线程处理一条独特的数据:d1、d2、d3、.。dn 和我总是希望 d1 由同一个线程 1 处理。在 Java 中,我会预先分配 24 个线程,并维护一个 id 到线程的映射,以循环方式分配它们。示例:2 个线程,5 个数据D1,D3, D5 Th1D2, D4 Th2

我查看了 Akka 文档,在 4 个调度程序中,没有一个满足我的需求。最接近的是PinnedDispatcher - 但它不断创建本机线程,结果是一个OOME。

除了创建我自己的调度程序之外,对此有什么想法吗?

谢谢

您不需要创建自己的调度程序,您只需要创建自己的执行器服务,您可以使用 ExecutorServiceConfigurator 提供给任何调度程序,以便在计划执行执行操作器时将其发送到"其"线程。您基本上可以保留单线程执行器服务的映射

希望对您有所帮助!

干杯√

最新更新