单例模式

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

 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;

  }

 

posted @ 2015-11-18 10:49  夏日树叶  阅读(202)  评论(0编辑  收藏  举报