Какая стратегия используется JobLockService для обеспечения синхронизации? - PullRequest
0 голосов
/ 07 августа 2011

Какая стратегия используется JobLockService для обеспечения синхронизации? Блокирует ли весь репозиторий? или есть другая техника?

Когда я пишу код такой, что:

String lockString = jobLockService.getLock(QName.createQName(Prefix,LocalName, Resolver));
LockToken lockToken = new LockToken();
lockToken.set(lockString);
// Something going here such as create a node or update or delete
// another somethign processes here
jobLockService.releaseLock(lockString);

Как вы можете заметить из этого кода, я использую JobLockService Что происходит после получения блокировки? Блокирует ли он вообще хранилище и не дает ли другим сторонам доступа к хранилищу?

Я спрашиваю о реальных методах, используемых для синхронизации.

Кроме того, как насчет LockToken здесь? в чем выгода от этого?

Заранее спасибо, ваши ответы очень высоко ценятся.

1 Ответ

2 голосов
/ 07 августа 2011

JobLockService не не накладывает какую-либо блокировку на фактическое содержимое, хранящееся в хранилище, не говоря уже о блокировке всего хранилища.После успешного вызова JobLockService.getLock любой поток может свободно обновлять любой узел, который он хочет редактировать.Именно ваш код должен гарантировать, что блоки, которые должны выполняться с управляемым параллелизмом, сначала пытаются получить такую ​​же блокировку.

Этот созданный вами объект LockToken кажется бесполезным и может быть отброшен.

...