И делает x = -1.
Но до того, как поток T2 получит шанс уменьшить х до -2, поток T1 может снова увеличить x до 1.
И так до бесконечности.
Таким образом, значение х может двигаться вперед и назад, как непрерывный бесконечный пинг-понг.
Теперь третий вид проблемы с живучестью, называется STARVATION или голодание.
Starvation возникает, когда какой-либо поток не может получить доступ к общим ресурсам и не может быть выполнен в результате, например, синхронизированного доступа к этому ресурсу другими потоками, выполнение которых занимает долгое время.
В результате этот поток голодает.
Паттерн защищенный блок Guarded Block
Предположим у нас есть задача написать приложение Producer-Consumer.
Это приложение состоит из двух потоков производителя, который создает данные, и потребителя, который что-то делает с этими данными.