Это сделало меня счастливым, когда я услышал о parallelStream()
в Java 8, который обрабатывает несколько ядер и, наконец, возвращает результат в одном JVM. Больше строк многопоточного кода. Насколько я понимаю, это справедливо только для одного JVM.
Но что, если я хочу распространять обработку через разные JVM на одном хосте или даже на нескольких хостах? Включает ли Java 8 любую абстракцию для ее упрощения?
В учебнике на dreamyssoft.com список пользователей
private static List<User> users = Arrays.asList(
new User(1, "Steve", "Vai", 40),
new User(4, "Joe", "Smith", 32),
new User(3, "Steve", "Johnson", 57),
new User(9, "Mike", "Stevens", 18),
new User(10, "George", "Armstrong", 24),
new User(2, "Jim", "Smith", 40),
new User(8, "Chuck", "Schneider", 34),
new User(5, "Jorje", "Gonzales", 22),
new User(6, "Jane", "Michaels", 47),
new User(7, "Kim", "Berlie", 60)
);
обрабатывается, чтобы получить средний возраст:
double average = users.parallelStream().map(u -> u.age).average().getAsDouble();
В этом случае он обрабатывается на одном хосте.
Мой вопрос: Может ли он обрабатываться с использованием нескольких хостов?
например. Host1
обрабатывает список ниже и возвращает average1
для пяти пользователей:
new User(1, "Steve", "Vai", 40),
new User(4, "Joe", "Smith", 32),
new User(3, "Steve", "Johnson", 57),
new User(9, "Mike", "Stevens", 18),
new User(10, "George", "Armstrong", 24),
Аналогично Host2
обрабатывает список ниже и возвращает average2
для остальных пяти пользователей:
new User(2, "Jim", "Smith", 40),
new User(8, "Chuck", "Schneider", 34),
new User(5, "Jorje", "Gonzales", 22),
new User(6, "Jane", "Michaels", 47),
new User(7, "Kim", "Berlie", 60)
Наконец Host3
вычисляет конечный результат, например:
average = (average1 + average2) / 2
Используя распределенную архитектуру, он может быть решен как удаленный. Есть ли у Java 8 более простой способ решить проблему с некоторой абстракцией?
Я знаю такие фреймворки, как Hadoop, Akka и Promises. Я говорю о чистой Java 8. Могу ли я получить какую-либо документацию и примеры для parallelStream()
для нескольких хостов?