黑马程序员技术交流社区

标题: 【石家庄校区】几个常用对象的生命周期以及单例设计模式 [打印本页]

作者: hbtian321    时间: 2017-12-9 17:21
标题: 【石家庄校区】几个常用对象的生命周期以及单例设计模式
本帖最后由 小石姐姐 于 2017-12-11 19:55 编辑

ServletContext对象的创建和销毁:
    创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext.
    销毁:服务器关闭或者项目从服务器中移除的时候

HttpSession何时创建和销毁的:
    创建:服务器端第一次调用getSession();
    销毁:
     非正常关闭服务器(正常关闭session会序列化):
     ession过期了默认30分钟.
     手动调用session.invalidate();
request对象何时创建和销毁:
     创建:客户端向服务器发送一次请求,服务器就会创建request对象.
     销毁:服务器对这次请求作出响应后就会销毁request对象.
Filter的生命周期:
     在服务器开启的时候创建Filter,服务器关闭或项目从服务器中被移除的时候销毁
单例设计模式:
     保证一个类的对象唯一性
     单例模式之饿汉式:(加载类的时候就创建了对象)
     私有构造方法
      在本类的成员位置,创建出自己类的对象(因为是静态方法返回对象,所以该对象也应该被static修饰)
      提供静态公共方法,返回创建的对象(因为如果不用静态方法,那么必须要用该类对象才能调用,所有静态修饰,可以用类直接调用)      
      饿汉式的不足:饿汉式加载类的时候就创建了对象,有时只用该类的其它静态方法,不想创建对象,所以可以使用懒汉式      
      单例模式之懒汉式(有问题的写法):
          private static LazySingle ls;
            private LazySingle() {
                 }                     
           //在方法里创建对象
             public static LazySingle getInstance() {
             if(ls == null)
              ls = new LazySingle();
                     return ls;
                        }                              
             懒汉式有线程安全隐患
              用同步解决
               public static LazySingle getInstance() {
                //为了提升效率,在同步代码块外面再进行一次if判断
               if (ls == null)
              //为了解决安全问题,用同步代码块
              synchronized (LazySingle.class) {                        
               if(ls == null)
                ls = new LazySingle();
                                 }
                  return ls;
                        }
              懒汉式:安全的,高效的应用

作者: 小石姐姐    时间: 2017-12-11 19:55
赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2