Как заблокировать с помощью ReentrantLock?
Я ожидал бы, что следующий тест напечатает только «был заблокирован» один раз. НО, следовательно, печатает строку.
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");
}
}
}
}
Насколько я понял,tryLock
заблокируетReentrantLock
если возможно (т.е. если еще не заблокирован). Но, очевидно, это не так.
Как я могу установить такую блокировку безопасным?