Java에서 singleton 패턴을 구현할 때이 질문이 떠오른다. 아래에 나열된 예는 실제 코드가 아니지만 원래 코드와 매우 유사합니다. (또는 가능한 한 적은 등) 같은 클래스의 여러 정적 동기화 방법이 없습니다 - 나는 정적 동기화 방법의 행동에 대해 매우 확실하지 않다 때문에Java에서 정적 메서드를 동기화하는 방법
public class ConnectionFactory{
private static ConnectionFactory instance;
public static synchronized ConnectionFactory getInstance(){
if(instance == null){
instance = new ConnectionFactory();
}
return instance;
}
private ConnectionFactory(){
// private constructor implementation
}
}
, 나는 구글에서 몇 가지 제안을 얻는다. 정적 동기화 메서드를 구현할 때 클래스 개체에 속한 잠금이 여러 개의 정적 동기화 된 메서드를 사용하여 시스템의 성능을 저하시킬 수 있으므로 사용하는 것이 좋습니다.
맞습니까? 또는 JVM 정적 동기화 된 메서드를 구현하는 다른 메커니즘을 사용합니까? 클래스에서 여러 개의 정적 동기화 된 메서드를 구현해야하는 경우 가장 좋은 방법은 무엇입니까?
감사합니다.
친절에 감사드립니다!
public class ConnectionFactory{
private static ConnectionFactory instance = new ConnectionFactory();
public static ConnectionFactory getInstance(){
return instance;
}
private ConnectionFactory(){
}
}
당신이 볼 수 있듯이, getInstance
방법에서 실제 필요 당신이 할 수있는 지금이 없다 : (가능한 코드에서 적은 수의 변경합니다)
은 실제 코드는 초기화 지연에 관심 있습니까? 이는 대개 코드와 개발자의 시간 낭비이기 때문에; 선언에서 필드를 초기화하는 것은 99 %의 시간을 수행하는 올바른 작업이며 동기화가 필요하지 않게 만듭니다. –