单例中懒汉和饿汉的本质区别?

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

我来回答

2个回答

热心网友 时间:2023-10-02 18:42

饿汉式:
public
class
Singleton{
private
static
Singleton
singleton
=
new
Singleton
();
private
Singleton
(){}
public
Singleton
getInstance(){return
singletion;}
}
懒汉式:
public
class
Singleton{
private
static
Singleton
singleton
=
null;
public
static
synchronized
synchronized
getInstance(){
if(singleton==null){
singleton
=
new
Singleton();
}
return
singleton;
}
}
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种

热心网友 时间:2023-10-02 18:42

懒汉式是,只有用到这个用例的时候,再将他实例化,不会浪费,所以效率要高一些。
饿汉式则是程序只要开始,就将他实例化,到用到他的时候就省去了再实例的时间,所以速度和反应快。这是这俩的区别
不过差距不会那么明显。
但是大项目,在效率上体现的就有点明显了
祝你好运

热心网友 时间:2023-10-02 18:42

饿汉式:
public
class
Singleton{
private
static
Singleton
singleton
=
new
Singleton
();
private
Singleton
(){}
public
Singleton
getInstance(){return
singletion;}
}
懒汉式:
public
class
Singleton{
private
static
Singleton
singleton
=
null;
public
static
synchronized
synchronized
getInstance(){
if(singleton==null){
singleton
=
new
Singleton();
}
return
singleton;
}
}
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种

热心网友 时间:2023-10-02 18:42

懒汉式是,只有用到这个用例的时候,再将他实例化,不会浪费,所以效率要高一些。
饿汉式则是程序只要开始,就将他实例化,到用到他的时候就省去了再实例的时间,所以速度和反应快。这是这俩的区别
不过差距不会那么明显。
但是大项目,在效率上体现的就有点明显了
祝你好运
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com