在全局过程中只存在一个唯一实例。
需要把构造函数私有化,提供一个本类的静态变量,并且通过对应的静态方法来获取这个唯一的静态变量。
饿汉式不存在多线程并发安全问题,可能会导致内存的浪费
懒汉式相对节省内存,存在线程安全问题=
public class SingletonDemo {
public static void main(String[] args) {
}
}
class TaskManager{
private TaskManager(){}
//对象必须是静态的。一是因为方法是静态的,限制了必须是静态的,最主要是因为 静态是存储在方法区的,并且只会存储一次,会被所有的对象共享
//在定义变量的时候同时也把变量初始化的方式----饿汉式
//不会存在多线程并发安全问题 可能会导致内存的浪费
private static TaskManager tm = new TaskManager();
public static TaskManager getInstance(){
return tm;
}
}
class TaskManager1{
private TaskManager1(){}
private static TaskManager1 tm;
public static TaskManager1 getInstance(){
//把变量推迟初始化--懒汉式
//相对节省内存 存在线程安全问题
if(tm == null){
tm = new TaskManager1();
}
return tm;
}
}