Подтвердить что ты не робот

Разница между Java Concurrency, Akka и RxJava?

Сегодня я обнаружил, что для concurrency в java у нас есть хорошая структура, например Akka, и я также обнаружил, что для приложения multithreading в приложении существуют платформы реактивного программирования, такие как RxJava. Но я все еще смущен! Почему оба лучше, чем Java Concurrency framework?

В настоящее время реактивная программирование является зрелой темой, и большинство языков поддерживают Functional Reactive Programing как Netflix предоставляют API-интерфейсы относительно Reactive programming для нескольких языков. RxJava является одним из api, который используется для java, scala и т.д. Согласно RxJava, они внутренне используют участников для поддержки multithreading, а Akka также использует Actors для multithreading программирования.

Итак, в чем разница между подходами Akka и Reactive programming и почему они хороши от Java Concurrency?

4b9b3361

Ответ 1

По словам Матиаса Доеница, на данный момент RxJava не имеет противодавления, в отличие от реализации Akkas Reactive Streams. Но RxJava, похоже, работает над добавлением противодавления.

Оба фреймворка смогут взаимодействовать через реактивные потоковые spi. Таким образом, вы сможете делать очень похожие вещи. Согласно Матиасу, разница будет заключаться в том, что реализация Akka основывается на актерах, а не на многопоточности. И в результате будет более результативным.

Моим источником этой информации является беседа, которую Матиас дал на прошлой неделе в голландской группе пользователей Scala.

edit: Я поддерживаю коррекцию обратной поддержки в RxJava. Если вы следуете ссылке Eriks, вы можете прочитать, что означает противодавление.

Ответ 3

Akka Streams, основанные на актерах, обеспечивают взаимодействие между актерами и потоками, например:

  • чтение от актера и передача его в потоки и
  • чтение из потоков и передача его актерам