在学习Java并发编程的时候看到了单例的讨论,发现CAS挺适应这个场合的,于是顺手写了个简单的,实现了延迟实例化和多线程安全,也算是无锁的一种用法吧:
使用CAS的单例模式实现
1 public class SingleInstance
2 {
3 static private SingleInstance _instance;
4
5 public static SingleInstance Instance
6 {
7 get
8 {
9 if (_instance == null)
10 Interlocked.CompareExchange<SingleInstance>
11 (ref _instance, new SingleInstance(), null);
12 return _instance;
13 }
14 }
15
16 private SingleInstance() { }
17 }
18