我有一个同步方法,似乎在“使用”同步的时间明显长于应有的时间。看起来像;
public static synchronized void myMethod(MyParameter p) {
//body (not expensive)
}
电话看起来像;
myMethod(generateParameter());
已知
generateParameter()
调用非常昂贵(需要很长时间)。我的想法是在执行myMethod
期间generateParameter()
类上的互斥体被阻塞了,这会发生什么?我发现要调试它是一个不同的问题,但这似乎正在发生。 最佳答案
那不可能首先执行generateParameter()
调用,然后将其结果作为myMethod
调用的参数,然后调用mutt。
是花费很长时间还是被无限期阻止? (僵局)