Antag att jag har denna kod:
interface I
{
void a();
}
class C
implements I
{
synchronized void a()
{
//...
}
}
Om jag nu anropar a genom interfacet:
I var = ...
var.a();
Kommer a då att vara synchronized?
2 svar · 239 visningar · startad av Sang-drax
Antag att jag har denna kod:
interface I
{
void a();
}
class C
implements I
{
synchronized void a()
{
//...
}
}
Om jag nu anropar a genom interfacet:
I var = ...
var.a();
Kommer a då att vara synchronized?
Antagligen inte det svar som du vill ha men du får det eftersom du inte fått något annat ;)
Det skulle verkligen förvåna mig om den inte är synchronized när du skriver så. Ditt interface påvärkar ju inte (så vitt jag vet) själva programmet utan är bara en mall för hur programmet ska se ut.
Du kan alltid göra ett litet test program där du startar 2 trådar som anroppar samma instans av klassen hela tiden. Använd System.out.println(), om medelandena blir fina så är det synchronizerat, annars inte :)
/Viktor
Den blir synkroniserad, eftersom det är så du implementerar metoden. Det är egentligen inte mer vettigt att den skulle bli osynkroniserad än att hela programmet skulle krascha med ett MethodNotFoundException för att metoden inte har någon kropp i interfacedefinitionen.