Siehe unten Code, dies verwirrt mich, in der Klasse DynamicPropertyFactory, es blockiert ConfigurationManager.class, wie ich verstehe, funktioniert die Sperre nur in der Klasse oder der Instanz selbst. Wie versteht man das?verwirrt bei Verwendung synchronisierter Sperre
public class *DynamicPropertyFactory*{
public static *DynamicPropertyFactory* initWithConfigurationSource(AbstractConfiguration config) {
synchronized (**ConfigurationManager.class**) {
if (config == null) {
throw new NullPointerException("config is null");
}
if (ConfigurationManager.isConfigurationInstalled() && config != ConfigurationManager.instance) {
throw new IllegalStateException("ConfigurationManager is already initialized with configuration "
+ ConfigurationManager.getConfigInstance());
}
if (config instanceof DynamicPropertySupport) {
return initWithConfigurationSource((DynamicPropertySupport) config);
}
return initWithConfigurationSource(new ConfigurationBackedDynamicPropertySupportImpl(config));
}
}
}
Warum sperren Sie 'Klasse' an erster Stelle? – emotionlessbananas
"Das Schloss funktioniert nur in der Klasse oder der Instanz selbst" Es ist unklar, was Sie hier meinen. –
Beachten Sie auch, dass "synchronisiert" nichts "sperrt". Es * erwirbt * eine exklusive Sperre für den Monitor eines Objekts (in diesem Fall 'ConfigurationManager.class'), die verhindert, dass mehrere synchronisierte Methoden oder Blöcke, die dieselbe Sperre verwenden, gleichzeitig ausgeführt werden. – Kayaman