我們在學校的設計模式,並學到了單身的這樣的實現(懶/不是線程安全的一個):懶辛格爾頓什麼優勢了線程安全的一個
package com.crunchify.tutorials;
public class CrunchifySingleton {
private static CrunchifySingleton instance = null;
protected CrunchifySingleton() {
}
// Lazy Initialization (If required then only)
public static CrunchifySingleton getInstance() {
if (instance == null) {
// Thread Safe. Might be costly operation in some case
synchronized (CrunchifySingleton.class) {
if (instance == null) {
instance = new CrunchifySingleton();
}
}
}
return instance;
}
}
現在我找到了實現這樣的:
package com.crunchify.tutorials;
public class ThreadSafeSingleton {
private static final Object instance = new Object();
private ThreadSafeSingleton() {
}
// Runtime initialization
// By defualt ThreadSafe
public static Object getInstance() {
return instance;
}
}
現在我想知道,當第一實現使得使用更有意義,因爲根據http://crunchify.com/thread-safe-and-a-fast-singleton-implementation-in-java/第二個是線程安全的,需要較少的線路。
是的,但第二個不懶。 – Kayaman
@Kayaman單身人士懶惰而不是線程安全的優勢是什麼?這就是我沒有得到的。謝謝您的回答! – Gildraths
單身人士真正需要的次數非常少,你實際需要一個懶惰初始化懶惰單例的次數再次更小。 –