饿汉式和懒汉式的区别
1,饿汉式是空间换时间:会随着类的加载而加载,可能你用不到但是已经在堆里占用了空间
懒汉式是时间换空间:用的时候才创建对象,但是会多增加代码,每次都要判断引用是不是空
2,多线程访问饿汉式不会创建多个实例:只会创建一个实例对象,不会因为多线程多创建出对象.
多线程访问懒汉式有可能会创建多个实例,所以多线程不能用懒汉式:在程序运行到判断是不是空的时候如果被其他线程抢过去,那么多个线程都会创建各自线程的实例对象,
开发中实际用的多为饿汉式,但是面试什么的都会问懒汉式.
还有一种就是:
1.私有构造函数
2.实例化本类对象,把引用定义成fianal和static的,这样就可以保证不被修改了 |