25. september 2002 - 16:01Der er
4 kommentarer og 1 løsning
extends syncronized
hej Eksperter, jeg er for nyligt blevet oplyst om syncronized i Java. Men hvordan det virker er mig ikke rigtigt faldet ind endnu, derfor håber jeg på en debat! Hvad jeg har forstået indtil videre er, hvis at kun én proces kan "være" i en metode ad gangen, men den proces der er aktiv i metoden kan godt blive udelukket af en anden metode og blive aktiv igen når den anden proces er kørt! Men hvordan fungere det med det data (variable) der er i metoden, vil dataene være det samme for den første proces der kørte eller er de blevet ændret af den anden proces der kørte? (for så er dataene jo uberegnelige)...
Med keyword'et syncronized menes, at delete data bliver låst, når en proces er i sin kritiske region. Hvis en klasse indeholder bare een metode, der er syncronized, så er klassen en monitor, og hvis der fx. er en tilskrivBeløb-metode, der arbejder på et kontoobjekt, så er dette låst for alle andre - ellers vil der jo opstå inkonsistente data. Det er altså en måde at forholde sig til samtidighedsproblematikken på.
ja, men hvad jeg har forstået kan en proces der kører i en monitor/syncronized godt blive udelukket (exclusion) af en anden proces eller bare blive midlertidigt stoppet hvis dens timer udløber.
eks. int i; void tilskriv(int beloeb){ i= beloeb; //<= (her bliver den første proces midlertidigt udelukket og den anden proces går kører og ændre i)
System.out.println(i); } _______________ Så er i altså gemt således at den første process kan regne med i er hvad den satte den til! - er det det du mener?
Jeg mener (i Java), at en proces ikke bare kan blive udelukket, når den benytter en syncronized-metode. Men hvis den nu alligevel kan, så er der helt sikkert taget højde for, at i har den rette værdi, når den anden proces tager over.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.