单例模式
饿汉模式: 初始化时就加载,一直在内存中比较占内存,线程安全。
懒汉模式: 方法首次调用时才创建对象,相较懒汉模式不占内存,线程不安全。
package com.kai.singleton;
//饿汉单例模式
public class Singleton1 {
//1.创建私有的构造方法
private Singleton1(){}
//2.创建对象
private static Singleton1 instance = new Singleton1();
//3.静态调用
public static Singleton1 getInstance(){
return instance;
}
}
----------------------------------
package com.kai.singleton;
//懒汉模式
public class Singleton2 {
//1.创建私有构造方法
private Singleton2(){}
//2.声明对象
private static Singleton2 instance = null;
//3.创建对象 4.静态调用
public static Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
应用场景
网站计数器: 一般也是单例模式,否则难以同步。
数据库连接池: 一般也是单例模式,因为数据库连接是一种数据库资源。
读取配置文件的类:一般只有一个对象,没必要每次读取配置文件的数据都生成一个对象去读取。
应用程序日志应用:一般由于共享日志文件一直处于打开状态,只能有一个实例去操作,否则内容不 好追加。
runtime类