Код: Выделить всё
Consumer start();
Consumer performDailyAggregates();
Consumer performLastNDaysAggregates();
Consumer repopulateScores();
Consumer updateDataStore();
Код: Выделить всё
private void performAllTasks(T data) {
start().andThen(performDailyAggregates())
.andThen(performLastNDaysAggregates())
.andThen(repopulateScores())
.andThen(updateDataStore())
.accept(data);
}
Код: Выделить всё
// NOOP in the context further stands for 'anything -> {}'
private void performAllTasks(Stream consumerList, T data) {
consumerList.reduce(NOOP, Consumer::andThen).accept(data);
}
Сейчас мне приходит в голову то, что в Javadoc четко указано, что
Код: Выделить всё
accumulatorобъединения двух значений
Далее я подумал Как обеспечить порядок обработки в потоках Java8? быть упорядоченным (порядок обработки должен быть таким же, как порядок обнаружения)!
Хорошо, поток, сгенерированный из списка, будет быть упорядоченным, и если поток не будет параллельным перед сокращением, следующая реализация будет работать. 2
Код: Выделить всё
private void performAllTasks(List consumerList, T data) {
consumerList.stream().reduce(NOOP, Consumer::andThen).accept(data);
}
В. Есть ли возможность каким-либо образом предоставить 1 вызываемым объектам для выполнения задач?
Подробнее здесь: https://stackoverflow.com/questions/598 ... -consumers