1、看了图片加载框架 Glide (3.7.0版) 源码,发现glide 也是使用volatile 关键字的双重校验实现的单例,可见这种方法是值得信赖的。
package
com;
public
class
Person
{
private
static
volatile
Person
person =
null
;
private
Person(){
}
public
static
Person
getInstance(){
if
(
person ==
null
)
{
synchronized
( Person.
class
){
if
(
person ==
null
)
{
person
=
new
Person()
;
}
}
}
return
person
;
}
}
2、
静态内部类
package
com;
public
class
Person
{
private
Person(){
}
private
static
class
PersonHolder{
/**
*
静态初始化器,由JVM来保证线程安全
*/
private
static
Person
instance =
new
Person();
}
public
static
Person
getInstance() {
return
PersonHolder.instance;
}
}
资源利用率高,不执行getInstance()不被实例,可以执行该类其他静态方法
转自:http://www.cnblogs.com/zhaoyanjun/p/5652930.html#3751373