




Эффективно, да.
Одной из частей конфигурации вашего Актера является то, какой Диспетчер будут использовать эти актеры. Диспетчер — это то, что соединяет актора с реальными потоками, которые будут выполнять работу. (Диспетчеры по умолчанию используют ForkJoinPools, но также могут быть выделенными пулами потоков или даже потоками, выделенными для определенного актора.)
Таким образом, типичный способ, которым вы даете Актеру «приоритет», - это дать ему выделенный диспетчер и, таким образом, выделенные потоки. Например, сама Akka делает это для своих внутренних сообщений: они запускаются на выделенном диспетчере, так что даже если вы развернете кучу плохо написанных акторов, блокирующих потоки, сама Akka все равно сможет функционировать.
Я поставил «приоритет» в кавычки, потому что вы не гарантируете определенный порядок обработки. (Есть и другие способы сделать это, но не через Актеров.) Но вы решаете случай, когда вы хотите, чтобы определенные актеры всегда имели больший доступ к ресурсам и/или чтобы определенные актеры выполнялись быстро.
(Теоретически вы могли бы пойти еще дальше и создать ThreadPoolExecutor с потоками с более высоким приоритетом, а затем создать Dispatcher на основе этого ThreadPoolExecutor. необычные обстоятельства.)
Обычно я назначаю актеров с высоким приоритетом для исправления диспетчера пула с предварительно выделенным размером пула, а других актеров обычному диспетчеру в файле конфигурации akka.