Наверное, главный вывод, который можно сделать из всего этого, — то, что смешивать изменяемое состояние с конкурентностью небезопасно. При функциональном программировании такой практики избегают, за исключением низкоуровневых трюков вроде кэширования. Второй вывод: при программировании в функциональном стиле никогда не нужно заботиться о том, синхронизирован ли другой функциональный метод, если только не считать трюков вроде кэширования, поскольку точно известно, что у него нет разделяемого изменяемого состояния.
Современный язык Java. Лямбда-выражения, потоки и функциональное программирование
·
Алан Майкрофт