Tốt hơn bạn nên sử dụng thành ngữ khóa đã kiểm tra kép cho mẫu đơn? Hoặc một phương pháp đồng bộ?Có tối ưu để sử dụng thành ngữ khóa đã kiểm tra kép cho mẫu đơn?
ví dụ:
private static volatile ProcessManager singleton = null;
public static ProcessManager getInstance() throws Exception {
if (singleton == null) {
synchronized (MyClass.class) {
if (singleton == null) {
singleton = new ProcessManager();
}
}
}
return singleton;
}
hoặc
private static processManager singleton = null;
public synchronized static processManager getInsatnce() throws Exception {
if(singleton == null) {
singleton = new processManager();
}
return singleton
}
Có hai ifs lồng nhau mà không cần bất cứ điều gì ở giữa , như trong đoạn mã thứ hai của bạn, không có ý nghĩa gì cả. – Jesper
Không có điều nào ở trên, như được giải thích trong [câu trả lời này] (http://stackoverflow.com/a/15498689/1103872) cho câu hỏi trước của riêng bạn. –
trong ví dụ thứ hai của bạn, kiểm tra kép là không cần thiết (giả sử bạn không chạm vào thành viên singleton bất cứ nơi nào khác trong lớp học của bạn) vì bạn đã ở trong phần quan trọng – Grimmy