По сути, в Scala существует два вида акторов (при использовании стандартных акторов Scala 2.8): акторы на основе потоков и событий.
Когда вы используете receive
(или receiveWithin
),как в вашем примере, вы создаете актеров на основе потоков, которые являются относительно тяжелыми.Для каждого субъекта существует отдельный поток, который блокируется, пока субъект ожидает сообщения.
Когда вы используете react
вместо receive
, ваш субъект будет актером на основе событий.Актеры, основанные на событиях, намного легче;между акторами и потоками, основанными на событиях, нет прямой связи.Вы можете легко создать тысячи актеров на основе событий.
Я написал сообщение в блоге (и пример приложения) с более подробной информацией.