zoukankan      html  css  js  c++  java
  • 单例模式

    第一种:(懒汉)线程不安全

     public class Singleton {

      private static Singleton instance;

    private Singleton(){

    public static Singleton getInstance(){
    if(instance == null){

    instance = new Singleton();

    return  instance;

    }

     这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。

     第二种:(懒汉)线程安全

    public class Singleton {

      private static Singleton instance;

    private Singleton(){}

    public static synchronized Singleton getInstance(){

     if(instance == null){

    instance = new Singleton(); 

    return instance; 

     

     这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。

     第三种:(饿汉)

    public class Singleton{

    private static Singleton instance = new Singleton();

    private Singleton(){}

    private static Singleton getInstance(){

      return instance;

    第四种:(饿汉,变种)

    public class Singleton{

      private static Singleton instance = null;

    static{

      instance = new Singleton();

      private Singleton(){}

    public static Singleton getInstance(){

      return instance;

      }

  • 相关阅读:
    FFT入门
    FJOI省队集训 chessboard
    FJOI省队集训 florida
    树上莫队
    NOIP2015 Revenge
    APIO2013 tasksauthor
    油漆门
    一些字符串有关的题目
    字符串题模板集合
    sg函数与博弈论2
  • 原文地址:https://www.cnblogs.com/vanl/p/4973783.html
Copyright © 2011-2022 走看看