单例模式

单例模式

题目描述

  设计一个类,我们只能生成该类的一个实例

解决思路

  使用单例模式,私有化构造函数,保证只有当前类可调用,对外提供一个public方法,让外部访问生成的实例,使用双检锁保证并发情况下的线程安全。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* Author: 刘俊重
* Time: 2018-06-30
*/
public class Main {

/**
* 使用双检锁创建线程安全的单例模式
*/
public static class Singleton1{
private static volatile Singleton1 single = null;
private Singleton1(){}

public static Singleton1 getSingle(){
if(single==null){
synchronized (Singleton1.class){
if(single==null){
single = new Singleton1();
}
}
}
return single;
}
}

public static void main(String[] args) {
System.out.println(Singleton1.getSingle()==Singleton1.getSingle());
}
}

测试结果

1
true
刘俊重 wechat
欢迎关注我的微信公众号
坚持原创技术分享