19. maj 2004 - 00:52Der er
13 kommentarer og 1 løsning
håndtering af tråde
når man nu har fået samlet sig en håndfuld client i en samling tråde, er der nogle metoder til at håndtere dem.
Der er noget med synkronisering, og bla bla....
Har også læst (JAVA DOKUMENTAION) at man ikke skal bruge div. funktioner til at stoppe en tråde med. det har noget at gøre med de data som tråden har ikke bliver frigivet i hukommelsen, og det er jo ikke godt.
jeg kunne godt bruge noget hjælp til at få en bedre forståelse for det, og hvad der kan gøres for at undgå negative hændelser.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
hvis du forestiller dig følgede kode...hvordan ville du bruge join metoden..dette eks, gør at min client bliver hængende, og de andre kan ikke noget....
Socket serv; while((i++ < Conn) || (Conn == 0)){ serv = listener.accept(); thread_conn conn_c= new thread_conn(serv); Thread t = new Thread(conn_c); t.start(); t.join(); }
Når man joiner en tråd så venter man på at den afslutter.
Så det man tit gør er st at starte X tråde og til sidste vente på at de alle er færdige.
Normalt i den slags programmer som dit (tråd creation ved event) vil man bare undlade at gøre noget. Når tråden er færdig dør den og garbage collectes.
Hvis du har specielle behov for at styre den må du fortælle hvad du vil.
jeg har 2 problemer. 1). Min server tager ikke hensyn til hvis en client pludselig dør. Dvs. hvis strømsvigt kom ind i billedet, eller måske bare at klablet blev revet ud. Så når clienten ikke at afslutte selv, ved "exit" kommando.
2). Hvis clients bruger trykker "x" på vinduet. Så bliver der heller ikke sent nogen "exit" kommando, og aflutter korrekt.
Hvis client "forsvinder" så vil tråden på serveren vel på et eller andet tidspunkt få en socket exception og dø naturligt.
Hvis det skal ske hurtigere kan du vedtage en keep alive protokol, så hvis serveren ikke har modtaget noget fra client i løbet af 60 sekunder, så BANG DU ER DØD.
202.508 tjente point / 587 dage = 345 point / dagen i gennemsnit
Synes godt om
Ny brugerNybegynder
Din løsning...
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.