В рекомендации ментора написано как решить, но что тут происходит мне решительно непонятно! Я насчитал 3 нити: 1. Нить RethrowableTask 2. Нить A, задается в мэйне, запускается внутри RethrowableTask после его запуска. 3. Нить Executor которая закрывает нить RethrowableTask. Программа по моему работает так: 1. создается объект RethrowableTask 2. создается первая нить на основе созданного объекта. 3. первая нить запускает вторую. 4. вторая нить инициализирует переменную throwable 5. какая-то непонятная фигня, назовем ее магией. 6. ждем секунду. 7. магия создает третью нить которая закрывает первую 8. проверяем инициализацию переменной throwable Вот я не понимаю почему я должен поставить volatile там где просит ментор, когда из трех нитей только одна имеет дело с этой переменной, при этом она ее инициализирует, а не читает???