标签:
你的任务是设计一个 getInstance
方法,对于给定的类,每次调用 getInstance
时,都可得到同一个实例。
在 Java 中:
A a = A.getInstance();
A b = A.getInstance();
a 应等于 b.
如果并发的调用 getInstance,你的程序也可以正确的执行么?
首先肯定想到的是定义一个private static Solution成员,这样这个成员就独立于所有的实例了。至于线程安全我百度了一下,有一个关键字volatile。
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
具体的可以看百度百科
1 class Solution { 2 /** 3 * @return: The same instance of this class every time 4 */ 5 private Solution(){}; 6 private static volatile Solution instance; 7 static { 8 instance = new Solution(); 9 } 10 public static Solution getInstance() { 11 return instance; 12 } 13 };
标签:
原文地址:http://www.cnblogs.com/FJH1994/p/5022272.html