我有一个同步方法,似乎“使用”同步的时间比它应该的要长得多。看起来有点像;
public static synchronized void myMethod(MyParameter p) {
//body (not expensive)
}
调用看起来像;
myMethod(generateParameter());
众所周知,generateParameter()
是一个非常昂贵(需要很长时间)的调用。我的想法是 myMethod
类上的互斥量在 generateParameter()
执行期间被阻塞,这是怎么回事?我发现它是一个不同的调试问题,但这似乎是正在发生的事情。
最佳答案
这不可能; generateParameter()
调用首先执行,然后将其结果作为参数提供给 myMethod
调用,然后 获取互斥锁。
是需要很长时间,还是无限期地被阻止? (死锁)
关于具有昂贵参数的Java同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287511/