Tjena!
Jag sitter och pular med en serverapplikation, och fick nu några funderingar. Jag har ett eget logg-system, för att logga vad som händer, där det skrivs information till en XML-fil. Serverapplikationen är multitrådad, dvs. skapar en ny tråd för varje klient. Vid varje klientanrop anropas en klass ( ReadWriteClient.class ) som sköter hanteringen av klienten, och i ReadWriteClient så öppnas filen, loggningen görs, och till slut stängs filen.
Problemet kan beskrivas så här:
Klient[0] uppkopplad, ny tråd[0] skapas.
Logfilen öppnas av tråd[0].
Klient[1] uppkopplad, ny tråd[1] skapas.
Logfilen öppnas av tråd[1].
Loggning sker av tråd[1].
Loggen av tråd[1] sparas till filen.
Loggning sker av tråd[0].
Loggen av tråd[0] sparas till filen.
Som ni ser så kommer vid det här scenariot loggen från tråd[1] att tappas bort, eftersom att skrivning från tråd[0] sker efter, som var först att öppna filen.
Hur löser jag det på bästa sätt? Ska jag synchronize:a metoderna för öppna/spara, eller ska jag skapa pooler och synchronize:a på något sätt?
MvH,