webForumDet fria alternativet

synchronized...

Java

3 svar · 376 visningar · startad av phonkworks

Medlem sedan juli 2001228 inlägg
Frågan#1

Hejhej!

Säg att man har en klass med en synkroniserad metod i vars kropp man anropar ett statiskt objekt i en annan klass. Låser man alla andra metoder i det statiska objektet när man går in i den första klassens synkroniserade metod? Eller låser man dem först när det statiska objeket anropas? Eller låser man upp det statiska objektets andra metoder överhuvudtaget?

He he, nej det är inget skolexempel. Bara ett litet moment 22 jag råkat ut för. Om det nu är ett moment 22 vill säga.

mvh
phonk

Medlem sedan dec. 2000485 inlägg
#2

Låsningar är alltid ett problem.
Du får själv avgöra vilken lösning som är bäst för dig.
Kan bara säga: Ju mer du låser desto större risk att andra objekt får vänta, även om de inte vill komma åt samma metod. Fast å andra sidan ju mindre låsning desto mer komplex låsnings mekanism får du utveckla...

Medlem sedan apr. 20007 588 inlägg
#3

När en tråd anropar din synkroniserade metod så kommer ett lås att sättas på det objekt som metoden tillhör. Det statiska objektet i den andra klassen berörs inte, låset sätts på objektet med den synkroniserade metoden.

Men, eftersom låset sätts på hela objektet, så kommer alla andra synkroniserade metoder i detta objekt också att låsas.

------------------
det finns ingen.info tillgänglig.

"inside every human being there's an american trying to get out".

Medlem sedan juli 2001228 inlägg
#4

Ok, så jag låser inte det statiska objektets metoder(dom är inte synkroniserade). Bra! Då är jag safe.

Tack!
phonk

270 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
142 ms — ändringar (db)