欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

设计模式:单例模式之静态内部类

发布时间:2025/6/15 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 设计模式:单例模式之静态内部类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 优缺点说明:
  1). 这种方式采用了类加载的机制来保证初始化实例时只有一个线程。
  2). 静态内部类方式在Singleton1类被加载时并不会立即实例化,而是在需要
实例化时,调用getSingleton1()方法,才会装载SingletonInstance类,从而完成
Singleton1的实例化。
  3). 类的静态属性只会在第一次加载类的时候初始化,所以在这里,jvm帮助我们
  保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。
  4). 优点: 避免了线程不安全,利用静态内部类特点实现延迟加载,效率高
  5). 结论: 推荐使用

package com.China.singleton.example7;public class SingletonTest07 {public static void main(String[] args){//Singleton1 s1 = Singleton1.getSingleton1();//Singleton1 s2 = Singleton1.getSingleton1();// s1, s2是同一个实例//System.out.println(s1 == s2);//System.out.println(s1.hashCode()+" "+s2.hashCode());T t1 = new T();new Thread(t1).start();T t2 = new T();new Thread(t2).start();System.out.println(t1.s1 == t2.s1);} }class T implements Runnable{public Singleton1 s1 = null;@Overridepublic void run() {try {Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}Singleton1 s1 = Singleton1.getSingleton1();System.out.println(s1.hashCode());} }// 静态内部类完成单例,推荐使用 class Singleton1{// 构造器私有化,外部不能newprivate Singleton1(){}// Singleton1加载的时候,并不会加载SingletonInstance,这样就可以保证懒加载// 写一个静态内部类, 该类中有一个静态属性 Singleton1private static class SingletonInstance{private static final Singleton1 instance = new Singleton1();}// 向外部暴露一个静态的公共方法public static Singleton1 getSingleton1(){return SingletonInstance.instance;} }

 

总结

以上是生活随笔为你收集整理的设计模式:单例模式之静态内部类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。