local variable type inference changes (#1036)

local variable type inference changes for design pattern singleton
This commit is contained in:
GVSharma 2019-10-26 21:10:14 +05:30 committed by Ilkka Seppälä
parent 58d8fa1758
commit 0b8d78e4bf
2 changed files with 11 additions and 11 deletions

View File

@ -74,36 +74,36 @@ public class App {
public static void main(String[] args) { public static void main(String[] args) {
// eagerly initialized singleton // eagerly initialized singleton
IvoryTower ivoryTower1 = IvoryTower.getInstance(); var ivoryTower1 = IvoryTower.getInstance();
IvoryTower ivoryTower2 = IvoryTower.getInstance(); var ivoryTower2 = IvoryTower.getInstance();
LOGGER.info("ivoryTower1={}", ivoryTower1); LOGGER.info("ivoryTower1={}", ivoryTower1);
LOGGER.info("ivoryTower2={}", ivoryTower2); LOGGER.info("ivoryTower2={}", ivoryTower2);
// lazily initialized singleton // lazily initialized singleton
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower1 = var threadSafeIvoryTower1 =
ThreadSafeLazyLoadedIvoryTower.getInstance(); ThreadSafeLazyLoadedIvoryTower.getInstance();
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower2 = var threadSafeIvoryTower2 =
ThreadSafeLazyLoadedIvoryTower.getInstance(); ThreadSafeLazyLoadedIvoryTower.getInstance();
LOGGER.info("threadSafeIvoryTower1={}", threadSafeIvoryTower1); LOGGER.info("threadSafeIvoryTower1={}", threadSafeIvoryTower1);
LOGGER.info("threadSafeIvoryTower2={}", threadSafeIvoryTower2); LOGGER.info("threadSafeIvoryTower2={}", threadSafeIvoryTower2);
// enum singleton // enum singleton
EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.INSTANCE; var enumIvoryTower1 = EnumIvoryTower.INSTANCE;
EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.INSTANCE; var enumIvoryTower2 = EnumIvoryTower.INSTANCE;
LOGGER.info("enumIvoryTower1={}", enumIvoryTower1); LOGGER.info("enumIvoryTower1={}", enumIvoryTower1);
LOGGER.info("enumIvoryTower2={}", enumIvoryTower2); LOGGER.info("enumIvoryTower2={}", enumIvoryTower2);
// double checked locking // double checked locking
ThreadSafeDoubleCheckLocking dcl1 = ThreadSafeDoubleCheckLocking.getInstance(); var dcl1 = ThreadSafeDoubleCheckLocking.getInstance();
LOGGER.info(dcl1.toString()); LOGGER.info(dcl1.toString());
ThreadSafeDoubleCheckLocking dcl2 = ThreadSafeDoubleCheckLocking.getInstance(); var dcl2 = ThreadSafeDoubleCheckLocking.getInstance();
LOGGER.info(dcl2.toString()); LOGGER.info(dcl2.toString());
// initialize on demand holder idiom // initialize on demand holder idiom
InitializingOnDemandHolderIdiom demandHolderIdiom = var demandHolderIdiom =
InitializingOnDemandHolderIdiom.getInstance(); InitializingOnDemandHolderIdiom.getInstance();
LOGGER.info(demandHolderIdiom.toString()); LOGGER.info(demandHolderIdiom.toString());
InitializingOnDemandHolderIdiom demandHolderIdiom2 = var demandHolderIdiom2 =
InitializingOnDemandHolderIdiom.getInstance(); InitializingOnDemandHolderIdiom.getInstance();
LOGGER.info(demandHolderIdiom2.toString()); LOGGER.info(demandHolderIdiom2.toString());
} }

View File

@ -59,7 +59,7 @@ public final class ThreadSafeDoubleCheckLocking {
// local variable increases performance by 25 percent // local variable increases performance by 25 percent
// Joshua Bloch "Effective Java, Second Edition", p. 283-284 // Joshua Bloch "Effective Java, Second Edition", p. 283-284
ThreadSafeDoubleCheckLocking result = instance; var result = instance;
// Check if singleton instance is initialized. If it is initialized then we can return the instance. // Check if singleton instance is initialized. If it is initialized then we can return the instance.
if (result == null) { if (result == null) {
// It is not initialized but we cannot be sure because some other thread might have initialized it // It is not initialized but we cannot be sure because some other thread might have initialized it