Многопоточное программирование является немаловажным в данный момент. Практически любой современный язык знает такие понятия как потоки, процессы и тому подобное. К тематике многопоточного программирования также относятся так называемые акторы. Дабы не переговаривать некоторые вещи на новый лад, процитирую понятие актора с Википедии:
В компьютерных науках модель акторов представляет собой математическую модель параллельных вычислений, которая трактует понятие «актор» как универсальный примитив параллельного численного расчёта: в ответ на сообщения, которые он получает, актор может принимать локальные решения, создавать новые акторы, посылать свои сообщения, а также устанавливать, как следует реагировать на последующие сообщения.
Что ж, суть вполне понятна и проста. Попробуем написать набор из акторов, один из которых по запросу генерирует следующее число Фибоначчи, а другой запрашивает генерацию.
Подготовка
Для начала импортируем необходимые классы:
  | 
  | 
Затем опишем сообщения, которые могут пересылать акторы:
  | 
  | 
Актор Generator
Данный актор будет вычислять новые числа Фибоначчи. Для того, чтобы это действительно был актор, нам нужно унаследовать его от scala.actors.Actor и реализовать функцию def act() { .. }. Внутри функция должна иметь конструкцию receive { .. }, которая и займется обработкой сообщений:
  | 
  | 
Актор Sender
Данный актор будет иметь схожую с предыдущим актором архитектуру, потому приведу просто его код с некоторыми пояснениями:
  | 
  | 
Запуск
Для всего этого нам понадобится только несколько строчек:
  | 
  | 
Также я попробовал запускать акторы в другом порядке - сначала Sender, а потом Generator, но даже так все отработало прекрасно.
Заключение
Все же Scala предлагает мощную поддержку многопоточности “из коробки”. Уже после того, как я “поиграл” с акторами, я выяснил, что текущая версия Scala имеет немного другую систему, которая разительно отличается от той, с которой я впервые познакомился. Также несомненно радует наличие таких вещей, как реакторы, расписания, каналы и др. В целом это во много раз лучше, чем создавать громоздкую конструкцию из потоков на чистой Java.