Как решить декларацию «Двойная проверка заблокирована» в Java?

Я хочу реализовать ленивую инициализацию для многопоточности в Java.
У меня есть код такого рода:

class Foo {
    private Helper helper = null;
    public Helper getHelper() {
        if (helper == null) {
            Helper h;
            synchronized(this) {
                h = helper;
                if (h == null) 
                    synchronized (this) {
                        h = new Helper();
                    } // release inner synchronization lock
                helper = h;
            } 
        }    
        return helper;
    }
    // other functions and members...
}

И я получаю декларацию «Двойная проверка заблокирована».
Как я могу решить это?

Ответы на вопрос(9)

Ваш ответ на вопрос