黑马程序员技术交流社区
标题:
【石家庄校区】几个常用对象的生命周期以及单例设计模式
[打印本页]
作者:
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