我对这件事很好奇。我在一个同步块中有一些代码,它调用一个SDK方法,但它挂起。为什么我的代码挂起?
synchronized(someObject) {
someSDKobj.someMethd();
}
如果我从一个非同步块中进行相同的调用,它会正确执行。
//synchronized(someObject)
{
someSDKobj.someMethd();
}
原因之一挂是如果SDK方法进行呼叫时,在不同的线程,到在同一“someObject”同步的另一种方法,但事实并非如此。
还有什么可以导致这种奇怪的现象?为什么被调用的方法会受到来自同步块的调用的影响?如果它很重要,这是在Java-ME上运行。
请详细说明您打电话的方法,根本没有足够的信息,可能是死锁或其他问题。 – 2012-04-19 09:13:02
你看到它挂在哪里吗?你确定它甚至进入了同步块吗?当您不提供可编译的代码时,您正在让社区对所有这些问题感到惊叹。 – 2012-04-19 09:14:22
你确定你需要在你调用该方法的同一个对象上进行同步吗?它是什么SDK方法?其他代码使用该对象? – 2012-04-19 11:55:48