У меня есть синхронизированный метод, который появляется, чтобы «использовать» синхронизацию значительно дольше, чем следовало бы. Это выглядит примерно так:Java синхронизированный метод с дорогостоящими параметрами
public static synchronized void myMethod(MyParameter p) {
//body (not expensive)
}
Звонок выглядит;
myMethod(generateParameter());
Где generateParameter()
, как известно, очень дорого (занимает много времени) вызова. Мое мышление заключается в том, что мьютекс в классе myMethod
заблокирован во время выполнения generateParameter()
, что происходит? Я нахожу, что это другая проблема для отладки, но это то, что, похоже, происходит.
ли 'generateParameter' также синхронизированы на уровне метода? –
Для правильного ответа требуется код для 'generateParameter'. –
'generateParameter()' не синхронизирован и существует как статический метод в противном случае не связанный с ним класс. – lynks