关于单例中懒汉和饿汉的一个小问题

发布网友 发布时间:2022-04-20 09:04

我来回答

3个回答

热心网友 时间:2023-10-21 10:21

方法,是一种行为,在是没有实例化这种说法的。这种行为在你调用它之前是不会自己执行的。

加载类是让虚拟机知道有这么一个类,类里有什么。


其实你自己调试一遍就可以知道了。

Student getInstance(){
    if(student == null) {  
        //先判断是否为空
        System.out.print("null");
        student = new Student();  //懒汉式做法 
    }
    return student;
}
main (..) {
   Class.getInstance();//控制台会输出null的,而在之前JVM已经将你这个类加载好了
}

热心网友 时间:2023-10-21 10:21

楼主可以看看懒加载模式 http://ke.baidu.com/link?url=r5GKBJnZdBIEO7zk4jNwEnpx9Y1zisQmU-ZO_axIcBzAjfEOIxshAsIht7JDXqEfd9MbK-5Ov4ea3P0nwhSQJK
懒汉式在调用时才会new对象,如果一个项目中有很多单例,,,使用饿汉式则会在系统启动时占用大量内存,从而影响运行效率.追问你这个倒是跟我想的一样,那请问这个是不是只有在工厂模式中有多个饿汉单例 才会这样?
如果我只有一个单例的饿汉 是不是就和一个单例的懒汉 没区别了?除了实例化对象顺序不一样,比如饿汉是初始化静态变量时候实例化,懒汉是在调用方法时候实例化,但是最后都是实例化了,其它应该没区别吧?
忽略线程什么的不计。

追答并不是所有方法都会被调用,,,如果一个单例非常占内存,,但是调用的几率又非常小...那么你会在调用的时候实例化,,还是一开始就实例化了呢??

热心网友 时间:2023-10-21 10:22

你代码错了吧。getInstance是一个方法。你不调用,如何实例化。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com