zoukankan      html  css  js  c++  java
  • 设计模式笔记5(单例模式)

         有的时候一些资源是只能有一个的,这时候,代表这个资源的对象就只能有一个,例如线程池。缓存等资源。

    有人会说直接用全局变量来实现不就是,这种情况是可以的,但是这样是有缺点的,全局变量在程序一开始的时候就创建好对象,但是,有些资源是十分消耗资源的,这样的话浪费大量资源。

    经典的模式代码如下:

    public class Name

    {

       private staitc Name name;

        private Name(){}

        public static Name getInstance(){

         if (name==null)

           name=new Name();

    return name;

       }

    }

    需要注意的有几点:1.拥有一个全局静态变量

    2.构造函数私有化

    这段代码看似没有问题,但是如果在多线程中,这段代码是有出错的可能的,如果两个线程同时执行了判断,这时候就都为true,这样的话就会产生两个对象。

    当然可以把getInstance()方法同步处理,但是这样无疑会降低程序的效率

    可以如下处理:

    public static Name getInstance(){

         if (name==null)

           {

             sychronized(Name,class)

         {

          if(name==null)

             name=new Name();

          }

            }

    return name;

       }

  • 相关阅读:
    什么是RUP
    oracle 导入导出
    jsp 标签
    java json 交互
    Spring MVC 学习过程遇到的问题
    Spring 与其他ORM 框架结合 作数据持久层解析 (转)
    Spring mvc 中快速获取request、reponse、session
    Spring 数据绑定
    spring mvc 请求对应控制器的解析策略配置
    spring 的几种注解
  • 原文地址:https://www.cnblogs.com/macula7/p/1960687.html
Copyright © 2011-2022 走看看