|
| Vente på at tråde afslutter...? Fra : Søren Møller Mogense~ |
Dato : 17-10-03 13:50 |
|
Hej Gruppe,
I min main starter jeg X-antal tråde.
Efter de er startet, vil jeg gerne vente på, at de alle afsluttet.
Men hvordan gør jeg lige det. Skal jeg evt. samle dem i en ThreadGroup???
Jeg har prøvet med en wait udmiddelbart efter der hvor jeg starter dem, men
det kan jeg ikke lige få til at virke.
Er der nogle som vil hjælpe mig???
Mvh.
Søren
| |
Lars M (17-10-2003)
| Kommentar Fra : Lars M |
Dato : 17-10-03 13:53 |
|
"Søren Møller Mogensen" <smm@mail1.stofanet.dk> wrote in message
news:3f8fe56c$0$14910$ba624c82@nntp05.dk.telia.net...
> Hej Gruppe,
>
> I min main starter jeg X-antal tråde.
>
> Efter de er startet, vil jeg gerne vente på, at de alle afsluttet.
> Men hvordan gør jeg lige det. Skal jeg evt. samle dem i en ThreadGroup???
>
> Jeg har prøvet med en wait udmiddelbart efter der hvor jeg starter dem,
men
> det kan jeg ikke lige få til at virke.
>
> Er der nogle som vil hjælpe mig???
>
> Mvh.
> Søren
>
>
Se javadoc til Thread.join().
Mvh
Latrs
| |
Søren Møller Mogense~ (17-10-2003)
| Kommentar Fra : Søren Møller Mogense~ |
Dato : 17-10-03 14:27 |
|
Hvis jeg bruger en join så starter trådene bare en ad gangen. Det kan godt
være det er mig der er helt forkert på den.
Det jeg gør er, at jeg i min main løber igennem en Vector, og starter en
tråd for hvert element. Antallet af elementer variere.
Mine elementer i Vectoren er alle klasser som extender Thread.
I min for løkke lave jeg en ny Thread, kalder startet og join på den.
Men så stor den bare og venter på at den tråd bliver færdig før den
fortsætter med den næste i Vectoren.
Det var ikke meningen. Meningen er, at alle klasserne (trådene) i Vectoren
skal startes.
Jeg vil så vente på, at alle trådene afsluttes før jeg forsætter min main.
Det kan være det er mig der bruger join() forkert.
Nogle råd??
"Lars M" <lamosfjern@dettepost8.tele.dk> skrev i en meddelelse
news:3f8fe616$0$30078$edfadb0f@dtext01.news.tele.dk...
>
> "Søren Møller Mogensen" <smm@mail1.stofanet.dk> wrote in message
> news:3f8fe56c$0$14910$ba624c82@nntp05.dk.telia.net...
> > Hej Gruppe,
> >
> > I min main starter jeg X-antal tråde.
> >
> > Efter de er startet, vil jeg gerne vente på, at de alle afsluttet.
> > Men hvordan gør jeg lige det. Skal jeg evt. samle dem i en
ThreadGroup???
> >
> > Jeg har prøvet med en wait udmiddelbart efter der hvor jeg starter dem,
> men
> > det kan jeg ikke lige få til at virke.
> >
> > Er der nogle som vil hjælpe mig???
> >
> > Mvh.
> > Søren
> >
> >
> Se javadoc til Thread.join().
>
> Mvh
> Latrs
>
>
| |
Lars M (17-10-2003)
| Kommentar Fra : Lars M |
Dato : 17-10-03 18:26 |
|
"Søren Møller Mogensen" <smm@mail1.stofanet.dk> wrote in message
news:3f8fee3b$0$14898$ba624c82@nntp05.dk.telia.net...
> Hvis jeg bruger en join så starter trådene bare en ad gangen. Det kan godt
> være det er mig der er helt forkert på den.
> Det jeg gør er, at jeg i min main løber igennem en Vector, og starter en
> tråd for hvert element. Antallet af elementer variere.
>
> Mine elementer i Vectoren er alle klasser som extender Thread.
> I min for løkke lave jeg en ny Thread, kalder startet og join på den.
> Men så stor den bare og venter på at den tråd bliver færdig før den
> fortsætter med den næste i Vectoren.
> Det var ikke meningen. Meningen er, at alle klasserne (trådene) i Vectoren
> skal startes.
>
> Jeg vil så vente på, at alle trådene afsluttes før jeg forsætter min main.
>
> Det kan være det er mig der bruger join() forkert.
>
> Nogle råd??
>
Lav to gennemløb af din liste: et gennemløb der starter alle tråde, og
derefter et gennemløb der joiner alle tråde.
Mvh
Lars
| |
Filip Larsen (17-10-2003)
| Kommentar Fra : Filip Larsen |
Dato : 17-10-03 19:02 |
|
Søren Møller Mogensen skrev
> Mine elementer i Vectoren er alle klasser som extender Thread.
> I min for løkke lave jeg en ny Thread, kalder startet og join på den.
> Men så stor den bare og venter på at den tråd bliver færdig før den
> fortsætter med den næste i Vectoren.
Kaldet til join blokerer indtil den pågældende tråd er afsluttet, så hvis du
kalder join lige efter start vil din løkke hænge her ganske som du
beskriver.
Hvis du istedet først starter alle dine tråde og derefter i en ny løkke
kalder join på trådene en efter en burde det virke. Dette udnytter det
forhold, at join returnerer med det samme hvis man kalder metoden på en
allerede afsluttet tråd. Om dette er en garanteret egenskab ved join for
alle versioner af Java kan jeg på stående fod ikke huske, men det virker i
hvert fald for 1.4 (se evt. koden for Thread.join() for den version du
bruger).
Mvh,
--
Filip Larsen
| |
|
|