From 76c6fabd6734af68e5657b16c50af98ee4f8ffda Mon Sep 17 00:00:00 2001 From: Markus Rathgeb Date: Thu, 16 Oct 2014 21:51:49 +0200 Subject: [PATCH] use initialization-on-demand holder idiom This gives us a highly efficient thread-safe "singleton" cache, without synchronization overhead... lecture: https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom --- src/main/java/jssc/SerialNativeAccess.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/jssc/SerialNativeAccess.java b/src/main/java/jssc/SerialNativeAccess.java index f8c163695..ed0afd97d 100644 --- a/src/main/java/jssc/SerialNativeAccess.java +++ b/src/main/java/jssc/SerialNativeAccess.java @@ -38,16 +38,16 @@ public class SerialNativeAccess { private int osType = -1; private static SerialNativeInterface sni = new SerialNativeInterface(); - private static SerialNativeAccess instance = null; + + private static class LazyHolder { + private static final SerialNativeAccess INSTANCE = new SerialNativeAccess(); + } public static SerialNativeAccess getInstance() { - if (SerialNativeAccess.instance == null) { - SerialNativeAccess.instance = new SerialNativeAccess(); - } - return SerialNativeAccess.instance; + return LazyHolder.INSTANCE; } - public SerialNativeAccess() { + private SerialNativeAccess() { String libFolderPath; String libName;