ReentrantLock no funciona

No puedo entender por qué el código no funciona correctamente. El problema es que ReentrantLock no bloquea la invocación de métodos en ThreadClass.run ()

Clase de recurso qué métodos se supone que están bloqueados en ThreadClass

public class ResourceClass {

    private int i; 

    public void setIncrement() {
        i++;
    }

    public int getIncrement() {
        return i;
    }

}

Clase de hilo

public class ThreadClass implements Runnable {

    private ResourceClass resource;
    private ReentrantLock reentrantLock = new ReentrantLock();

    ThreadClass(ResourceClass r) {
        resource = r;
    }

    public void run() {
        reentrantLock.lock();
        try {
            resource.setIncrement();
            System.out.println(resource.getIncrement());
        } finally {
            reentrantLock.unlock();
        }
    }

}

Clase principal

public class MainClass {

    public static void main(String[] args) {

        ResourceClass resource = new ResourceClass();

        Thread thread = new Thread(new ThreadClass(resource));
        thread.start();
        Thread thread2 = new Thread(new ThreadClass(resource));
        thread2.start();
        Thread thread3 = new Thread(new ThreadClass(resource));
        thread3.start();
    }

} 

Se supone que el código rodeado por lock in run () debe estar "sincronizado", por lo que solo un hilo tiene acceso a los métodos de Resourse-object. En la práctica no lo hace. El código da como resultado números repetidos, lo que significa que dos hilos tienen acceso a los métodos al mismo tiempo. Sé que es un problema realmente simple, pero no puedo entender cómo resolverlo. Gracias por la ayuda

Actualizar:

Lo tengo. Ese código funciona bien (eliminé setIncrement () y puse toda la lógica relevante en getIncrement ()):

public int getIncrement() {
        reentrantLock.lock();
        int incrementResult = i++;
        reentrantLock.unlock();
        return incrementResult;
} 

Respuestas a la pregunta(1)

Su respuesta a la pregunta