<强> 强>
,
<强> 强> <强>:强>
<强> 1。强> <强> 强>
<强> 2。强> <强> 强>
<强> 3。强> <强> 强>
<强> 4。强> <强> 强>
<强> 5。强> <强> 强>
<强> 强>
<强>,强>
<强>,强>
<强> 强>
1。
2。
3。
public class SingletonDemo1 {//类初始化时,立即加载这个对象(没有延时加载的优势)。加载类时,天然的是线程安全的! private static  SingletonDemo1 instance =, new SingletonDemo1 (),, private SingletonDemo1 () { }//方法没有同步,调用效率高! public static  SingletonDemo1 , getInstance () { ,,,,,,,,,,return 实例; } }
<强>,强>
<强> 强>
getInstance ()
<强> 强>
1。
2。
3. getinstance()同步
public class SingletonDemo2 {//类初始化时,不初始化这个对象(延时加载,真正用的时候再创建)。 private static  SingletonDemo2 实例, private SingletonDemo2(){,//私有化构造器 }//方法同步,调用效率低! public static , synchronized SingletonDemo2 , getInstance () { ,,,,,,,,,,如果(实例==null) { ,,,,,,,,,,,,,,,,,,,instance =, new SingletonDemo2 (); ,,,,,,,,,,} ,,,,,,,,,,return 实例; } }
<强>,强>
<强> 强>
<强> 强>
<强> 强> jvm
<强> 强>
public class SingletonDemo3 {, , private 才能static SingletonDemo3  instance =,零,, , public 才能static SingletonDemo3  getInstance (), {, ,,,if (instance ==, null), {, ,,,,,SingletonDemo3 sc,, ,,,,,synchronized (SingletonDemo3.class), {, ,,,,,,,sc =,实例,, ,,,,,,,if (sc ==, null), {, ,,,,,,,,,synchronized (SingletonDemo3.class), {, ,,,,,,,,,,,如果(sc ==, null), {, ,,,,,,,,,,,,,sc =, new SingletonDemo3 (),, ,,,,,,,,,,,}, ,,,,,,,,,}, ,,,,,,,,,instance =, sc,, ,,,,,,,}, ,,,,,}, ,,,}, ,,,return 实例,, ,,}, , private 才能;SingletonDemo3 (), {, , ,,}, }
<强>,强>
<强> 强>
<强> 强> <强>:强>
<强> 强>
1。
2。
3。getInstance
,
public class Singleto nDemo4 { private static  class SingletonClassInstance  { ,,,,,,,,,,private static final SingletonDemo4 instance =, new SingletonDemo4 (); } private SingletonDemo4 () { }//方法没有同步,调用效率高! public static  SingletonDemo4 , getInstance () { ,,,,,,,,,,return SingletonClassInstance.instance; } }
,
<强> 强>
<强> 强> JVM
<强> 强>
<强> 强>
- <李>
李> <李>
李> <李>
李>
public enum SingletonDemo5 { ,, ,,//这个枚举元素,本身就是单例对象! ,,实例; ,, ,,//添加自己需要的操作! ,,public void  singletonOperation () { ,,,,,,,,,,,System.out.println(“枚举实现单例模式“); ,,} null设计模式,单例模式,第一天学习