local variable type inference changes (#1036)
local variable type inference changes for design pattern singleton
This commit is contained in:
parent
58d8fa1758
commit
0b8d78e4bf
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user