2015-12-30 12 views
10

W java-8 pojawia się nowa adnotacja @sun.misc.Contended.Co to jest wartość adnotacji @ sun.misc.Contended?

Istnieje kilka dobrze napisane artykuły, które wyjaśniają, co robi i jak go używać:

Ale to, co nie zostało wyjaśnione w dowolnym miejscu, jest co to jest value tej adnotacji? To znaczy, na przykład w java.lang.Thread jest używany jak:

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

Co to jest wartość "tlr"? Na co wpływa? Co się stanie, jeśli ten value będzie domyślny (pusty)?

+0

Prawdopodobnie wiesz, że wszystko w pakiecie 'sun.misc' jest * nie * publicznym interfejsem API i dlatego nie jest dokumentowane. Miejmy więc nadzieję, że ktoś ma pewne (odwrócone inżynierskie) wgląd. –

Odpowiedz

8

pobranych z grepcode.com -> Contended:

adnotacji @Contended pole może ewentualnie zawierać etykietę grupy rywalizacji. Grupa rywalizacji definiuje zestaw jednego lub więcej pól, które łącznie muszą być odizolowane od wszystkich innych grup rywalizacji. Pola w tej samej grupie rywalizacji nie mogą być izolowane parami. Bez tagu grupy rywalizacji (lub domyślnego pustego tagu: "") każde pole @Contended znajduje się w odrębnej i anonimowej grupie rywalizacji.

The value udokumentowano

Znacznik grupę (opcjonalnie) contention. Ten znacznik ma znaczenie tylko w przypadku adnotacji na poziomie pola.

Dlatego "tlr" jest po prostu wybrał nazwę grupy dla tego int threadLocalRandomProbe - jeśli opisywanie drugą zmienną o tej samej zmiennej grupowej będą zgrupowane razem i odizolowanych razem.

+1

Więc możemy zgadnąć, '" tlr "' oznacza ** t ** head ** l ** ocal ** r ** andom ... – Holger