Я использую другую модель concurrency в многопоточной среде (http://tutorials.jenkov.com/java-concurrency/concurrency-models.html)
В статье рассказывается о трех моделях concurrency.
-
Параллельные рабочие
Первая модель concurrency - это то, что я называю моделью параллельного работника. Входящие задания назначаются различным рабочим.
-
Линия сборки
Рабочие организованы как рабочие на конвейере в factory. Каждый работник выполняет только часть полной работы. Когда эта часть будет завершена, рабочий перенаправляет задание следующему работнику.
Каждый рабочий работает в своем потоке и не имеет отношения к другим рабочим. Это также иногда называют общей моделью concurrency.
-
Функциональный Parallelism
Основная идея функционального parallelism заключается в том, что вы реализуете свою программу, используя вызовы функций. Функции можно рассматривать как " агенты" или " участники", которые отправляют сообщения друг другу, точно так же, как в модели конвейера concurrency (AKA реактивные или управляемые событиями системы). Когда одна функция вызывает другую, это похоже на отправку сообщения.
Теперь я хочу сопоставить поддержку API Java для этих трех концепций.
-
Параллельные рабочие: ExecutorService, ThreadPoolExecutor, CountDownLatch API?
-
Линия сборки. Отправка события в систему обмена сообщениями, например JMS, и использование концепций сообщений Очереди и темы.
-
Функциональный Parallelism: ForkJoinPool в некоторой степени и java 8 потоков. Бассейн ForkJoin легко понять по сравнению с потоками.
Правильно ли я сопоставляю эти модели concurrency? Если нет, пожалуйста, поправьте меня.