Платформа актера была разработана для этого - фактически она может обрабатывать это только с одним потоком, при условии, что вы используете шаблон loop-react
следующим образом:
import actors._
import actors.Actor._
val a = actor {
loop {
react {
case ABC => //Handle here
}
}
}
На стр. 590-593 из Программирование в Scala это обсуждается более подробно: в основном метод react
никогда не возвращается нормально (он завершается с исключением), и поэтому его стек вызовов не нуждается в быть сохраненным. Вы можете думать об этом как о цикле навсегда.