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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package cn.itcast9;

  2. import java.util.Vector;

  3. /*
  4. * 设计一个单例的Person
  5. * 懒汉式单例设计模式
  6. */
  7. public class Person {

  8.         //定义本类类型成员变量,用于记录这个单例对象
  9.         //由于被静态方法访问,所以使用static修饰
  10.         //为了防止外界改变属性值,使用private修饰
  11.         private static Person p;
  12.        
  13.         //构造方法私有化
  14.         private Person(){}
  15.        
  16. //        //提供静态公共的返回对象实例的方法
  17. //        //标准的获取实例对象的方式
  18.         public static Person getInstance() {
  19.                 if(p==null) {
  20.                         p = new Person();
  21.                 }

  22.                 return p;
  23.         }
  24. //        //考虑线程安全问题
  25. //        public static Person getInstance() {
  26. //                synchronized (Demo.LOCK) {
  27. //                        if(p==null) {
  28. //                                p = new Person();
  29. //                        }
  30. //                }
  31. //                return p;
  32. //        }
  33.        
  34. //        //考虑线程安全问题
  35. //        public static synchronized Person getInstance() {
  36. //                if(p==null) {
  37. //                        p = new Person();
  38. //                }
  39. //                return p;
  40. //        }
  41.        
  42. //        //考虑线程安全问题,有考虑效率问题
  43. //        public static Person getInstance() {
  44. //               
  45. //                if(p==null) {
  46. //                        synchronized (Demo.LOCK) {
  47. //                                if(p==null) {
  48. //                                        p = new Person();
  49. //                                }
  50. //                        }
  51. //                }
  52. //               
  53. //                return p;
  54. //        }
  55.        
  56. }
复制代码
  1. package cn.itcast;
  2. /*
  3. * 单例设计模式:
  4. *                 内存中有且只有一个对象
  5. */
  6. public class Demo {

  7.         public static final Object LOCK = new Object();
  8.        
  9.         public static void main(String[] args) {
  10.                
  11. //                Person p = new Person();
  12. //                Person p2 = new Person();
  13.                
  14. //                System.out.println(p==p2);
  15.                
  16.                 Person instance = Person.getInstance();
  17.                 Person instance2 = Person.getInstance();
  18.                
  19.                 System.out.println(instance==instance2);
  20.         }

  21. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
学习到了
回复 使用道具 举报
学习,,,
回复 使用道具 举报
学些了。。。
回复 使用道具 举报
学习一下!
回复 使用道具 举报
学习了  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马