Scala были синхронные актеры. Актеры Akka с самого начала асинхронны. Реактивные программы могут быть реализованы любым способом, синхронным и асинхронным. Единственное значимое требование к реактивным программам - поддержка противодавления. В синхронном программировании противодавление обеспечивается естественным путем путем блокировки участвующих потоков. Задать противодавление асинхронно, когда блокировка потоков запрещена, сложно. Для этой цели был разработан протокол реактивных потоков . Актеры Akka не поддерживают этот протокол и поэтому не могут считаться реактивными, но Akka Streams do.
Протокол реактивных потоков также может быть легко реализован синхронно с потоками, Семафоры и блокирующие очереди, то есть реактивные программы, не считаются асинхронными. Как правило, синхронное программирование проще, его единственным недостатком по сравнению с асинхронным программированием является потребление памяти для стеков потоков.
В целом, реактивные или нет, а также асинхронные или нет, являются независимыми функциями, они могут встречаться во всех комбинациях.