zoukankan      html  css  js  c++  java
  • Daily Coding Problem: Problem #726

    import java.util.concurrent.atomic.AtomicInteger
    
    /**
     * This problem was asked by Microsoft.
    Implement the singleton pattern with a twist.
    First, instead of storing one instance, store two instances.
    And in every even call of getInstance(), return the first instance and in every odd call of getInstance(), return the second instance.
     * */
    
    /*
    * Rules for making a class Singleton:
    * 1. A private constructor
    * 2. A static reference of its class
    * 3. One static method
    * 4. Globally accessible object reference
    * 5. Consistency across multiple threads
    * */
    
    //in kotlin we need to use the object keyword to use Singleton class
    //饿汉式
    object Singleton {
    }
    
    //懒汉式
    class Singleton_ private constructor() {
        companion object {
            //lazy default is LazyThreadSafetyMode.SYNCHRONIZED
            private val firstInstance: Singleton_ by lazy { Singleton_() }
            private val secondInstance: Singleton_ by lazy { Singleton_() }
            private val counter = AtomicInteger(1)
    
            fun getInstance(): Singleton_ {
                return if (counter.getAndIncrement() % 2 == 0) firstInstance else secondInstance
            }
        }
    }
  • 相关阅读:
    OCP-1Z0-053-V12.02-597题
    OCP-1Z0-053-V12.02-599题
    OCP-1Z0-053-V12.02-609题
    OCP-1Z0-053-V12.02-604题
    OCP-1Z0-053-V12.02-607题
    OCP-1Z0-053-V12.02-588题
    OCP-1Z0-053-V12.02-592题
    OCP-1Z0-053-V12.02-587题
    OCP-1Z0-053-V12.02-582题
    OCP-1Z0-053-V12.02-583题
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14051940.html
Copyright © 2011-2022 走看看