Подтвердить что ты не робот

Что такое @sun.misc.Contended значение аннотации?

В java-8 появляется новая аннотация @sun.misc.Contended.

Есть несколько хорошо написанных статей, которые объясняют, что он делает и как их использовать:

Но что не объяснено нигде, является ли это value этой аннотации? Я имею в виду, например, в java.lang.Thread он используется как:

@sun.misc.Contended("tlr")
int threadLocalRandomProbe;

Что это за "tlr" значение? На что это влияет? Что произойдет, если этот value будет по умолчанию (пустой)?

4b9b3361

Ответ 1

Взято из grepcode.com → Contended:

A @Contended аннотация поля может необязательно включать тег конкурирующей группы. Конфликтная группа определяет набор из одного или нескольких полей, которые вместе должны быть изолированы от всех других конкурирующих групп. Поля в одной конкурирующей группе могут не быть попарно изолированными. Без тега конкурирующей группы (или с пустым тегом по умолчанию: ") каждое поле @Contended находится в своей отдельной и анонимной конкурирующей группе.

value документируется с помощью

(необязательный) тег конкурирующей группы. Этот тег имеет смысл только для аннотаций на уровне поля.

Поэтому "tlr" является просто выбранным именем группы для этого int threadLocalRandomProbe - если вы добавите вторую переменную с тем же групповым тегом, они будут сгруппированы вместе и изолированы вместе.