我对这件事很好奇。我有一些代码,在一个同步块中,
它调用一个 SDK 方法,但它挂起。
synchronized(someObject) {
someSDKobj.someMethd();
}
如果我从未同步的块中进行相同的调用,它会正确执行。
//synchronized(someObject)
{
someSDKobj.someMethd();
}
挂起的一个原因是,如果 sdk 方法在不同的线程上调用另一个在同一个“someObject”上同步的方法,但事实并非如此。
还有什么可能导致这种奇怪的现象?为什么被调用的方法会受到从同步块调用的事实的影响?如果重要的话,这是在 Java-ME 上运行的。