黑马程序员技术交流社区
标题:
Java中的单例举例
[打印本页]
作者:
Curvat
时间:
2016-6-1 10:29
标题:
Java中的单例举例
本帖最后由 Curvat 于 2016-6-1 10:54 编辑
第一种(懒汉,线程不安全)
public
class
Singleton
{
private
static
Singleton instance;
private Singleton (){}
public static Singleton getInstance() {
if
(instance ==
null
) {
instance =
new
Singleton();
}
return
instance;
}
}
第二种(懒汉,线程安全)
pulic class Singleton {
private
static
Singleton instance;
private Singleton () {}
public static synchronized Singleton getInstace() {
if
(instance ==
null
) {
instance =
new
Singleton();
}
return
instance;
}
}
第三种(饿汉)
public
class
Singleton
{
private
static
Singleton instance =
new
Singleton();
private Singleton (){}
public static Singleton getInstance() {
return
instance;
}
第四种(饿汉,变种)
public
class
Singleton
{
private
Singleton instance =
null
;
static
{
instance =
new
Singleton();
}
private Singleton () {};
public static Singleton getInstance() {
return
this
.instance;
}
}
第五种(静态内部类)
public
class Singleton {
private
static
class SingletonHolder {
private
static
final
Singleton INSTANCE =
null
;
}
private Singleton (){}
public static final Singleton getInstance() {
return
SingletonHolder.INSTANCE;
}
}
第六种(枚举)
public
enum
Singleton {
INSTANCE;
public void whateverMethod() {
}
}
第七中(双重校验锁)
public
class Singleton {
private
volatile
static
Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if
(singleton ==
null
) {
synchronized
(Singleton.class) {
if
(singleton ==
null
) {
singleton =
new
Singleton();
}
}
}
return
singleton;
}
}
作者:
Curvat
时间:
2016-6-1 10:33
本帖最后由 Curvat 于 2016-6-1 10:51 编辑
第一种(懒汉,线程不安全)
public class Singleton {
private static Singleton instance;
private Singleton (){} public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance; }
}
第二种(懒汉,线程安全)
pulic class Singleton {
private static Singleton instance;
private Singleton () {}
public static synchronized Singleton getInstace() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
第三种(饿汉)
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}第四种(饿汉,变种)
public class Singleton {
private Singleton instance = null;
static {
instance = new Singleton();
}
private Singleton () {};
public static Singleton getInstance() {
return this.instance;
}
}
第五种(静态内部类)
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = null;
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
第六种(枚举)
public enum Singleton {
INSTANCE; public void whateverMethod() {
}
}
第七中(双重校验锁)
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if(singleton == null) {
synchronized (Singleton.class) {
if(singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
作者:
qq2233751026
时间:
2016-6-1 10:49
这么乱 有啥用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2