Если у вас есть ресурс (например, глобальный список книг), и у вас запущены два потока, которые могут изменить этот список. Есть много ситуаций, когда данные списка могут стать противоречивыми.
- (Тема A читает книгу и отображает ее данные)
- (Поток B удаляет ту же Книгу, в то время как Данные используются Потоком A)
- (Тема А теперь хочет добавить некоторую информацию в Книгу)
Таким образом, вы должны сделать свой код поточно-безопасным , чтобы в любое время только один отдельный поток мог иметь доступ для записи в список книг.
Взаимная блокировка , упомянутая SpyrosP, происходит, когда Поток A блокирует Список для записи и ожидает, пока Поток B добавит данные в список. Потому что оба потока будут ждать друг друга, чтобы сделать то, что они не могут сделать. Это происходит только в том случае, если механизм обеспечения безопасности потоков реализован неправильно.