Avatar billede danielhep Nybegynder
19. maj 2004 - 00:52 Der 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.
Avatar billede arne_v Ekspert
19. maj 2004 - 01:36 #1
Bedst er at kalde join til at vente på en tråd er færdig (se f.eks. min lille
artikelt om tråde i Java).

Hvis man ikke kan vente så er det tilladt at kalde interrupt på dem.
Avatar billede danielhep Nybegynder
19. maj 2004 - 15:47 #2
jeg har set din lille artiklen..
Avatar billede danielhep Nybegynder
20. maj 2004 - 02:16 #3
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();
      }
Avatar billede arne_v Ekspert
20. maj 2004 - 10:41 #4
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.
Avatar billede danielhep Nybegynder
20. maj 2004 - 19:14 #5
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.
Avatar billede arne_v Ekspert
20. maj 2004 - 19:17 #6
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.
Avatar billede danielhep Nybegynder
20. maj 2004 - 19:48 #7
hva nu hvis client-tråden har allokeret noget hukommelse på serveren, og ens af disse hændelser sker.
Avatar billede danielhep Nybegynder
20. maj 2004 - 19:48 #8
bliver det automatisk ryddet af vejen af garbage collectes....
Avatar billede arne_v Ekspert
20. maj 2004 - 19:50 #9
socket exception => run metoden afsluttes => tråd objektet med alle under
objekter garbage collectes
Avatar billede arne_v Ekspert
20. maj 2004 - 19:50 #10
garbage collection gør livet simplere
Avatar billede danielhep Nybegynder
20. maj 2004 - 19:53 #11
answer me....
Avatar billede danielhep Nybegynder
20. maj 2004 - 19:54 #12
hvor mange point gør du dig om dagen egenligt... ?
Avatar billede arne_v Ekspert
20. maj 2004 - 19:54 #13
svar
Avatar billede arne_v Ekspert
20. maj 2004 - 19:57 #14
202.508 tjente point / 587 dage = 345 point / dagen i gennemsnit
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester