Я ожидал, что это навсегда заблокируется:
synchronized (this){
synchronized (this){
}
}
, но имеет смысл, что это не выглядит ... похоже, если текущий поток владеет блокировкой на this
, тогда второй вызовпо сути, проходящий.
Существует ли в Java механизм, который может создать критический раздел, который привязан не к текущему потоку, а к чему-то еще?Как то так:
lock.key('foo', l1 -> {
lock.key('foo', l2 -> {
// we might never get here
l1.release();
});
});