Avatar billede arnejan Nybegynder
05. april 2004 - 01:54 Der er 5 kommentarer

Mere angående applet der hænger

Der er noget jeg ikke forstår.

I en bog jeg har står der i start metoden:

private Thread clockThread = null;

public void start()
{
if (clockThread == null)
{
  clockThread = new Thread(this, "Clock");
  clockThread.start();
}
}

Der jeg ikke forstår er at der står if (clockThread == null)
. Fordi som jeg kan se det, vil denne betingelse altid være sand, eller hvad ??

Mvh
Avatar billede simonvalter Praktikant
05. april 2004 - 02:00 #1
nej, når du sætter
clockThread = new Thread(this, "Clock");
er den ikke længere null

det sørger for at du ikke starter tråden flere gange

hvis du feks kørte
this.start(); // clockThread er = null, start tråden
this.start(); // clockThread er ikke null, kører allerede
Avatar billede arnejan Nybegynder
05. april 2004 - 02:14 #2
Jo men start bliver jo kun kørt engang automatisk. Det er en Applet
Avatar billede arne_v Ekspert
05. april 2004 - 08:12 #3
Man skal se meget førend man slider hul i brille glassene.

:-)

Det må bare være forfatteren som har lånt noget kode fra en
anden kontekst, hvor den kunne kaldes flere gange.
Avatar billede arnejan Nybegynder
05. april 2004 - 14:44 #4
ok
Avatar billede arnejan Nybegynder
05. april 2004 - 14:47 #5
Men jeg har fundet lidt ud af det. Det er fordi at i nogen versioner af java (specielt Microsoft) kan start godt blive kaldt to gange. Init bliver altid kaldt en gang.

Jeg tror ikke forfatteren har været klar over det selv, han har vist bare skrevet det.
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