Wie mit ReentrantLock sperren?

Ich würde erwarten, dass der folgende Test nur einmal "Wurde gesperrt" druckt. ABER es druckt folglich die Zeile.

public class LocKTest {
    @Test
    public void testLock() {
        Lock lock = new ReentrantLock();
        while (true) {
            if (lock.tryLock()) {
                //lock.lock(); same result if I include an explicit lock here
                System.out.println("has been locked");
            }
        }
    }
}

So weit ich verstanden habe,tryLock sperrt dasReentrantLock wenn möglich (dh wenn noch nicht gesperrt). Aber offensichtlich ist das nicht der Fall.

Wie kann ich eine solche Sperre threadsicher einstellen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage