Saturday, January 27, 2007

Singleton-Pattern and Lazy Loading

Als Ergänzung zu meinem alten Artikel zur Implementierung des Singleton-Patterns in Java verweise ich hier auf den Artikel "Singletons and lazy loading" auf OnJava.com in dem eine Möglichkeit dargestellt wird, wie man die Zugriffsmethode "getInstance()" bei der Lazy-Initialisierung sychnroniziert, ohne jeden einzelnen Aufruf der Zugriffsmethode ebenfalls mit "sychnronized" zu markieren.

The usual example, goes something like this:

public class Singleton {

static Singleton instance;

public static synchronized Singleton getInstance() { if (instance == null) instance == new Singleton(); return instance; }

}

The problem with this solution is that synchronized method getInstance() is called every time, while synchronization is actually needed only for the first call of the method (which introduces performance overhead in your application)

Wobei ich den Kommentar "If you can avoid singletons, do it" natürlich nur unterstreichen kann.

No comments:

Post a Comment