4 ошибки. На мой взгляд не понятно. Методы устанавливают значения поля isValuePresent; после своих действий и осведомляют нити. устанавливают значения только после смены логики поля isValuePresent. Что я не вижу? Результат работы программы Put: 1 Got: 1 Put: 2 Got: 2 Put: 3 Got: 3 Put: 4 Got: 4 Put: 5 Got: 5 Put: 6 Got: 6 Put: 7 Got: 7 Put: 8 Got: 8 Put: 9 Got: 9 Put: 10 Got: 10 Put: 11 Got: 11 Put: 12 Got: 12 Put: 13 Got: 13 Put: 14 Got: 14 Put: 15 Got: 15 Put: 16 Got: 16 Put: 17 Got: 17 Put: 18 Got: 18 Put: 19 Got: 19 Put: 20 Got: 20 Put: 21 Got: 21 Put: 22 Got: 22 Put: 23 Got: 23 Put: 24 Got: 24 Put: 25 Got: 25 Put: 26 Got: 26 Put: 27 Got: 27 Put: 28 Got: 28 Put: 29 Got: 29 Put: 30 Got: 30 Put: 31 Got: 31 Put: 32 Got: 32 Put: 33 Got: 33 Put: 34 Got: 34 Put: 35