Public TrdnsterfluwutileiBenl, b int fron di^bl- rMxl
ban* • b
frcmAccamt • frcn njiAnount • bm
y
Public VQld run O ł
iry I
■nil* U rut)
int toAccosrt • out) (ban*. sueO • naw rana* 11 double aoount • wxAtcunt • fet fi runflcret) barA .trans ft*r{ frcoAcc:unt. toZccount ąnoi/it ■
Threao ile*p((intj <KlA» • feth randonOll
\
calcu llnt<ffupte«3L«ceotion e) (l
prtuate Bani. bank pnv*te ir.t frjaAccount: o»-ivate oouOle iw*/«ciunt pnvate int repetiticns. prtttt* int y.iki • 10
y
■ LOfld1t1on taCcndttlonf I zwraca obiekt warunku związany z dana blokada
■ voul awaiU) wprowadza wątek do zbioru wątków oczekujących na spełnienie danego warunku
■ 'c‘ 3 v /mi’.A' () odblokowuje wszystkie wątki należące do zbioru wątków oczekujących danego warunku
■ 19031 i> odblokowuje jeden, losowo wybrany wątek należący do zbioru wątków oczekujących danego warunku
w poprzednich punktach omówiliśmy zastosowania obiektów Lot k i Condition 'iMÓm
przejdziemy do dalszego materiału, podsumujmy najpierw najważniejsze wiadomości dotyczące blokad 1 warunków
■ Blokada chroni blok kodu. pozwalając wykonywać go równocześnie tylko jednemu wątkowi.
■ Blokada zarządza dostępem wątków do chronionego bloku kodu
■ Z blokadą może być związany jeden lub w ięcej warunków
■ Każdy obiekt warunku zarządza wątkami, który m udało wejść do sekcji krytycznej, ale nic mogą kontynuować swojego działania.
Zanim w wersji JDK 5.0 wprowadzono interfejsy lq • i Contr: w języku Jasa stosowano
inny mechanizm synchronizacji Począwszy już od wersji I 0 r każdym obiektem w jeżyku Java związana była niejawnie blokada. Jeśli metoda zostanie zadeklarowana z użyciem słowa kluczowego y t-r: • i;■ c. to blokada obiektu chroni całą metodę Oznacza to. 2e wątek musi uzyskać blokadę obiektu. aby wywołać ty metodę
Innymi słowy, deklaracja
pub 1C SyncnronizeO vo*0 aetncdtl
cało meiMy
)
jest równoważna deklaracji
Public void oetnodt)
mpUcuiou locktl:
try
Cliło aetCĄy
flnally | lirpItcitLock JitockO: I
gdzie TilicitLoci reprezentuje niejawną blokadę związaną z użyciem słowa =>*xr 'or w
" njs/-v,n Pokładzie moglibyśmy zastosować słowo kluczowe sjnenror -.red w deklaracji metody transfer należącej do klasy Bark. zamiast używać jawnej blokady
■ Metoda *nt daiijc wąi»k
/ niejawną blokadą obiektu związany jest pojedynczy , , oczekujące watki
do zbioru wątków oczekujących Metody notify/hot^yA-Innymi słowy. wywołanie metody wd 11 lub noP fyA • i stano odpo
topi KHConiJItlOn waltO.
'"pilcuConflinon.łięnalAUił: , i
gdzie tnpl leiCCondltton jest warunkiem związanym z blokadą niejawną___
Metody usH l slgnąl należą do Wąsy Cbject
nazwy awatt i signaWIl. aby umknąć konfliktu z m>____1-—-"
S.oSU„c Sl„„„ kluarow iyncnronlłffj. mo*my u,mpkmcnu»-«: kia*Bk* » sposób: