本帖最后由 pp7803515 于 2015-7-2 19:04 编辑
- class Single {
- private static Single s = null;
- private Single() {
- }
- public static Single getInstance() {
- if (s == null) {
- synchronized (Single.class) {
- if (s == null) {
- s = new Single();
- }
- }
- }
- return s;
- }
- }
复制代码 这是一个常见的DCL单例模式。我想问下,在private static Single s = null;这句代码改为private static volatile Single s = null;是如何避免了DCL失效的呢?
还有一个小问题。单例模式中创建对象的方法也是静态的啊。这样单例模式和普通的静态方法到底有什么区别呢?
|
|