Я хочу иметь возможность блокировки на основе иерархии файловой системы. Например:
Тема 1:
lock("/");
doStuff();
unlock();
Тема 2:
lock("/sub/foo");
doStuff();
unlock();
Тема 3:
lock("/sub/bar");
doStuff();
unlock();
Если Thread 1 получает блокировку сначала, то потоки 2 и 3 будут заблокированы до тех пор, пока не разблокируется Thread 1. Однако, если Thread 2 сначала получает блокировку, тогда Thread 3 должен иметь возможность выполнять в то же время, что и Thread 2. Общее правило заключается в том, что если есть блокировка в родительском каталоге, то поток должен блокироваться.
Есть ли в Java что-нибудь встроенное, которое может помочь в решении этой проблемы? Я хочу, чтобы избежать хранения блокировки для каждого каталога, потому что будут сотни тысяч каталогов.