A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-9-12 09:50  /  355 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a
  1. class Student{
  2.         private String name;
  3.         private int age;
  4.         Student(){}
  5. }

  6. /**饿汉式
  7. class Singleton {

  8. //       
  9. //         * 单例设计模式:保证内存中只有一个对象
  10. //         *
  11. //         * 如何保证内存中只有一个对象?
  12. //         *          1 把构造函数私有化
  13. //         *          2 在成员位置自己创建一个对象
  14. //         *          3 通过一个公共方法提供对对象的访问
  15. //         
  16.         private Singleton(){}//私有化构造函数,使之无法从外部创建对象
  17.         private  static Student s = new Student();//创建一个对象,静态保证内存中只有一个
  18.                                                                                         //私有化防止被外部更改
  19.         //提供访问方法
  20.         public static Student getStudent(){ //因为构造函数私有化,所以方法只能定义成静态,通过函数名调用
  21.                 return s;
  22.         }

  23. }
  24. */
  25. //懒汉式
  26. class  Singleton{
  27.         private static Student s = null;
  28.         //私有化构造函数,则成员变量和成员函数都只能是静态修饰static
  29.        
  30.         private Singleton(){}
  31.        
  32.         //提供访问接口,由于存在多线程同时访问的情况,所以需要同步
  33.         public static synchronized Student getStudent(){
  34.                 //判断是否已有进程建立对象
  35.                 if(s == null)
  36.                         s = new Student();
  37.                 return s;
  38.         }
  39. }



  40. class Test{
  41.         public static void main(String[] args) {
  42.                 Student s1 = Singleton.getStudent();
  43.                 Student s2 = Singleton.getStudent();
  44.                 System.out.println(s1 == s2);//true
  45.         }
  46. }
复制代码


6 个回复

倒序浏览
懒汉的锁呢.....
回复 使用道具 举报
Wqi 发表于 2015-9-12 11:27
懒汉的锁呢.....

Singleton.class   在同步代码块传递锁对象时,传递Singleton.class
静态同步方法的锁就是类的字节码文件  类名.class
回复 使用道具 举报
单例模式,支持!
回复 使用道具 举报
嗯,写得很好。
回复 使用道具 举报
赞一个,加油
回复 使用道具 举报
Wqi 发表于 2015-9-12 11:27
懒汉的锁呢.....

有锁了 在函数那里
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马