Похоже, вы используете актеров Scala (не Akka). В этом случае, если вы используете стиль обработки сообщений receive
или receiveWithin
, тогда каждый субъект получит свой собственный поток. Использование стиля обработки сообщений react
разделяет пул потоков между участниками.
Когда я говорю receive
"стиль", я имею в виду в цикле, например:
val timerActor = actor {
while (true) {
receiveWithin(60 * 1000) {
case Stop => self.exit()
case TIMEOUT =>
destination ! Tick
}
}
}
В этом случае timerActor
не делится своей нитью с любым другим актером. receiveWithin
будет блокироваться, пока актер не получит сообщение Стоп или не пройдет 60 секунд. Если прошло 60 секунд, выполняется случай TIMEOUT.
Если вы хотите узнать мельчайшие подробности об актерах Scala, посмотрите статью Актеры, объединяющие потоки и события .
Akka также поддерживает акторов на основе потоков в дополнение к акторам на основе событий.