Мне очень интересно об этом. У меня есть код в синхронизированном блоке
, который вызывает метод SDK, но он зависает.Почему мой код висит?
synchronized(someObject) {
someSDKobj.someMethd();
}
Если я делаю тот же вызов из несинхронизированного блока, он выполняется правильно.
//synchronized(someObject)
{
someSDKobj.someMethd();
}
Одна из причин, чтобы повесить, если метод делает SDK вызов, в другом потоке, другой метод, который синхронизируется на том же «SomeObject», но это не так.
Что еще может вызвать это странное явление? почему на вызванный метод влияет тот факт, что он был вызван из синхронизированного блока? Если это имеет значение, это работает на Java-ME.
, пожалуйста, подробно расскажите, какой метод вы вызываете, здесь недостаточно информации, это может быть тупик или какая-то другая проблема. –
Вы видели, где именно он висит? Вы уверены, что он даже входит в синхронизированный блок? Вы заставляете сообщество задаваться вопросом обо всех этих вещах, когда вы не предоставляете компилируемый код. –
Вы уверены, что вам нужна синхронизация на том же объекте, на который вы вызываете метод? какой SDK-метод? какой другой код использует объект? –