02. august 2006 - 21:02Der er
7 kommentarer og 1 løsning
Brug af Thread.join(time), design-spørgsmål
Ved brug af Thread.join(time) har jeg man ofte brug for at vide, om en tråd afsluttes før time, eller når time nås. Thread.join(time) returnerer imidlertid ikke en status-kode (ville det ikke være oplagt?), så jeg klarer normalt situationen ved at oprette et flag, som default sættes til 'false' ved start af tråden og siden til 'true' umiddelbart inden run() returnerer.
Dette fungerer som udgangspunkt fint nok i det fleste situationer. I andre situationer bruger jeg for at spare kode imidertid en anonym indre klasse:
Hvordan kan jeg her på samme måde afgøre, om t.join(time) afbryder tråden før time, eller når time nås?
Som jeg ser det, kan jeg ikke uden videre oprette et flag i run(), som kendes uden for den anonyme indre klasse.
Jeg er klar over, at jeg i stedet for kunne oprette en "rigtig" klasse med flag inkluderet i konstruktøren, og jeg kunne sikkert også oprette flag som static, men jeg er overordnet interesseret i, om der er noget design-mæssigt jeg overser her.
Blot en korrektion (mest til mig selv): t.join(time) afbryder ikke tråden. Eksekveringen fortsætter efter t.join(time), men tråden kører videre i baggrunden.
->arne_v: Jeg tror du har ret. Hvis flaget oprettes i den ydre klasse, behøves det ikke være final. Det er kun hvis flaget er lokalt i metoden, at det skal være final. Er det ikke korrekt?
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.