定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供
应用:像Windows的任务管理器,做网站访问次数统计(当一个类需要频繁应用销毁操作时单例比较适合)
优点:节约内存;限制了实例的个数,有利于Java垃圾回收
懒汉式:延迟加载,省资源,不加同步锁可能造成并发,加同步锁访问处理效率变慢(推荐使用静态内部类)
public class Singleton {
private static Singleton singleton;
private Singleton() {
}
public static synchronized Singleton getSingleton() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
②饿汉式:线程安全,多个线程进行访问时不会实例化多个对象;
缺点是无论是否用到该实例都会被初始化,无故的开销变大
public class Singleton2 {
private static Singleton2 singleton2 = new Singleton2();
private Singleton2() {
}
public static Singleton2 getsingleton2() {
return singleton2;
}
}