Tôi đã viết mã bên dưới trong phương thức nhà máy tĩnh để trả về cá thể đơn của DefaultCache.Phương pháp của nhà máy để tạo ra cá thể đơn lẻ
public static ICache getInstance() {
if (cacheInstance == null) {
synchronized (ICache.class) {
if (cacheInstance == null) {
cacheInstance = new DefaultCache();
}
}
}
return cacheInstance;
}
Chúng ta có thực sự cần kiểm tra null 2 cho cacheInstance bên trong khối đồng bộ?
Ngoài câu trả lời, hãy xem c2.com/cgi/wiki?SingletonsAreEvil – Slauster
Bạn có thể muốn đọc bài viết trên Wikipedia về [Khóa kiểm tra kép] (http://en.wikipedia.org/wiki/Double_checked_locking_pattern #Usage_in_Java) –