今天小编给大家分享一下Java的懒汉与饿汉模式怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
首先,我们先了解下单例模式的定义:单例设计模式目的是使得类的一个对象成为系统中的唯一实例。
再看下,Java 中单例模式的定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。
那么,所谓“懒汉式”与“饿汉式”的区别,是在于建立单例对象的时间不同。
“懒汉式”:是在你真正用到的时候才去建这个单例对象;
“饿汉式”:在不管你用的用不上,一开始就建立这个单例对象。
饿汉式:通俗的来讲,这位打工人对干饭特积极,不管饿不饿都跟饿死鬼似的,老早的就把干饭工具准备好了( new 对象),随时准备干饭。
上代码:
class Hungry_people{
private int id;
private String name;
private Hungry_people(){
} //构造器私有化
private static Hungry_people Instance=new Hungry_people();
//内部创建类的对象
public static Hungry_people getInstance(){
return Instance;
}
//提供公共的静态方法,且返回对象。
}
public class Test1 {
public static void main(String[] args) {
Hungry_people hungry1 = Hungry_people.getInstance();
Hungry_people hungry2 = Hungry_people.getInstance();
}
}
懒汉式:通俗的讲,这位打工人对干饭一点都不上心,碗筷脏了也不理,啥时候要干饭了才来洗碗筷( new 对象)。
上代码:
class Lazy_people {
private Lazy_people(){
}
private static Lazy_people Instance = null;
//声明当前对象没有初始化值
public static Lazy_people getInstance(){
if (Instance == null){
Instance=new Lazy_people ();
//需要再造对象,不要就不new对象了
}
return Instance;
}
}
public class Test2 {
public static void main(String[] args) {
Lazy_people lazy1 = Lazy_people.getInstance();
}
}
对于饿汉式:
优点:线程贼安全
缺点:对象加载时间过长
对于懒汉式:
优点:延迟对象的创建,更快
缺点:多线程安全贼低,但是可以通过优化使其可用。
1.懒汉式和饿汉式有什么不同?
答:懒汉式的特点在于实例的延迟加载。
2.懒汉式的延迟加载有没有问题?
答:遇到多线程访问时会出现安全问题。
3.如何解决该问题?
答:可以增加同步来解决。
4.增加同步的方式?
答:用同步方法或同步代码块都可以,但是同步方法稍微有点低效。
5.增加同步时,使用的锁是哪一个?
答:该类所属的字节码文件对象。
以上就是“Java的懒汉与饿汉模式怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。