Немного вырожденный пример (скорее всего такой код надо рефактрить), но давайте для примера попробуем reduce() c троичным Boolean (null, true, false):
Boolean anyMatch = someStream()
.map(condition)
.reduce(null, (a, b) -> a == null ? b : a || b);
return anyMatch == null || anyMatch;
Потребует некоторого времени со стороны разработчика, который будет пытаться понять, зачем такой сложный редьюс (можно снабдить комментарием), но выглядит немного изящнее, чем добавление AtomicBoolean.
У меня это и без свопа работает. Виновник хруста винта не кто-то, а именно Хром. Что он делает в данной ситуации, для меня до сих пор загадка. Вам еще повезло — успеваете переключиться в другую консоль, у меня мертвый фриз происходит через секунду-полторы после лагов мышки.
А можете рассказать, как сделать OOM Killer более агрессивным? Например, в ситуации, когда приложение открыло/создало множество мелких файлов и держит их в памяти, при внезапной нехватке памяти ядро пытается высвободить эти файловые страницы, что вешает систему намертво со 100%-м дисковым I/O на несколько (десятков) минут. А ведь зачастую гораздо проще просто грохнуть само приложение с дальнешим его перезапуском.
В статье явно присутствуют фактические ошибки. Оригинал туториала по работе с Reactive-репозиториями находится тут. В отличие от данного туториала там не предлагается делать findAll()/filter(), а необходимые методы поиска и фильтрации зашиваются в сам репозиторий. Отличие от нереактивного репозитория только в том, что мы можем работать с результатами в «реактивном стиле» через коллбэки и возвращать не сам результат, а поток (flux или mono).
Имеется в виду бинарная операция умножения:
1 • 1 • 1 = 1
Аналогично для нейтрального элемента 0 бинарной операции сложения (чуть выше по тексту):
0 + 0 + 0 = 0
Потребует некоторого времени со стороны разработчика, который будет пытаться понять, зачем такой сложный редьюс (можно снабдить комментарием), но выглядит немного изящнее, чем добавление AtomicBoolean.
Имеется в виду бинарная операция умножения:
1 • 1 • 1 = 1
Аналогично для нейтрального элемента 0 бинарной операции сложения (чуть выше по тексту):
0 + 0 + 0 = 0