Merge pull request 'Initialize the Default Event Bus Statically' (#23) from f/static-singleton-initialization into develop

Reviewed-on: https://git.kske.dev/kske/event-bus/pulls/23
Reviewed-by: delvh <leon@kske.dev>
This commit is contained in:
Kai S. K. Engelbart 2021-10-16 08:33:08 +02:00
commit 866a547114
Signed by: Käfer & Engelbart Git
GPG Key ID: 70F2F9206EDC1FCE

View File

@ -52,26 +52,18 @@ public final class EventBus {
*/ */
public static final int DEFAULT_PRIORITY = 100; public static final int DEFAULT_PRIORITY = 100;
private static volatile EventBus singletonInstance; private static final EventBus singletonInstance = new EventBus();
private static final Logger logger = System.getLogger(EventBus.class.getName()); private static final Logger logger = System.getLogger(EventBus.class.getName());
/** /**
* Produces a singleton instance of the event bus. It is lazily initialized on the first call. * Returns the default event bus, which is a statically initialized singleton instance.
* *
* @return a singleton instance of the event bus. * @return the default event bus
* @since 0.0.2 * @since 0.0.2
*/ */
public static EventBus getInstance() { public static EventBus getInstance() {
EventBus instance = singletonInstance; return singletonInstance;
if (instance == null)
synchronized (EventBus.class) {
if ((instance = singletonInstance) == null) {
logger.log(Level.DEBUG, "Initializing singleton event bus instance");
instance = singletonInstance = new EventBus();
}
}
return instance;
} }
private final Map<Class<?>, TreeSet<EventHandler>> bindings = private final Map<Class<?>, TreeSet<EventHandler>> bindings =