Загляните в параллелизм.Может быть, вы столкнулись с такими ситуациями, как тупик.Это происходит, когда два объекта не заблокированы в одном и том же порядке, в результате чего два разных потока ожидают друг друга для освобождения другого объекта.
В этот момент кажется, что вся программа приостановлена.Может быть, это и происходит, но я не могу сказать наверняка, пока не увижу код.