Klasa reentrantlock

0

Mógłby mi ktoś w sposób, że tak powiem "łopatologiczny" wytłumaczyć co dokładnie robi ta klasa ??

0

ReentrantLock jest alternatywa dla instrinsic lock (sekcji synchronized). Posiada bardziej rozbudowana funckjonalnosc jak np. tryLock(), lockInterruptidly(), conditions, itp. Glowne wady sa takie, ze w przeciwienstwie do intrinsic lock, monitorow nie widac w stack trace. Ponadto nie jest objety optymalizacjami takimi jak biased locking, lock coalescing, lock coarsening czy lock elision.
Dlaczego po prostu nie przeczytasz JavaDoc'a?

1

Jest czymś na wzór prawa głosu na mównicy sejmowej. Kilka wątków współdzieli ten obiekt i używając metod lock i unlock wskazuje innym wątkom, że teraz one "mówią".
Dodatkowo w klasie tej zaszyta jest kolejka chętnych do mówienia. Plus jeszcze trochę metod pozwalających na sprawdzenie długości kolejki oczekujących, tego kto teraz ma blokadę itp.

0

Ale te wasze wyjaśnienia są zbyt generyczne i pasują do każdego locka właściwie. to co wyróżnia lock o który pyta autor to fakt ze dany wątek może lockować go wielokrotnie i nic się nie stanie. Gdyby wątek zrobił lock 2 razy na zwykłym locku to efektem byłby deadlock.

0
Shalom napisał(a):

Gdyby wątek zrobił lock 2 razy na zwykłym locku to efektem byłby deadlock.

Co masz na myśli używając określenia "zwykły lock"? Jeśli chodzi ci o intrinsic lock to jesteś w błędzie, bo oba są reentrant.

0

Generalnie reentrant ogólnie w programowaniu oznacza, że coś może być wywołane zanim skończyło się poprzednie wywołanie.

0

Po pierwsze, dziękuję Panowie za pomoc w temacie, generalnie ten wątek powinienem faktycznie założyć w dziale "Newbie" gdyż programowania dopiero się uczę. Fakt czytanie z dokumentacji sprawia mi jeszcze niemałe problemy(stąd prosiłem o tłumaczenie "łopatologiczne") dlatego postanowiłem zaczerpnąć wiedzy u bardziej doświadczonych kolegów, a pytanie o tę klasę wzięło się z typowego problemu akademickiego mianowicie problem ucztujących filozofów, którego jednym z rozwiązań jest użycie właśnie tej klasy. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1