我遇到与问题相同的问题:Akka Actor Priorities
我有一些CPU密集型任务应该尽可能快地处理,因此使用所有可用资源,但我还有更重要的任务,不时出现,应该更快地处理。
提供的解决方案是,两个不同的调度程序由分离的线程池构成。但我想这只能解决问题,如果CPU密集型任务仅限于8个核心中的6个,并且高优先级任务可以使用全部8个,因此总是保证2个核心可用于高优先级任务。但是如果没有高优先级任务可用,则2个核心处于空闲状态,不能用于其他任务。
我认为更好的解决方案是让2个调度程序可以使用所有内核,但其中一个具有较高优先级的线程,另一个具有较低优先级的线程。如果高优先级任务进入高优先级调度程序,则会使用其线程接管核心。
我知道您可以直接在Java中设置线程优先级,我不确定这是否实际上是在我上面描述的所需行为中进行转换。但如果是这样,我如何从scala akka调度程序配置此行为?