/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
applet og tråde
Fra : weaxler


Dato : 11-12-01 09:23

Jeg har lavet en applet, som kører i den sædvenlige hovedtråd, men der er
også andre tråds som
laver noget animation o.s.v mit problem er, at jeg gerne vil have disse
tråde til at stoppe når fokuset ikke er på appletten, og starte forfra når
fokus er tilbage igen, hvordan gøres dette.
Skal klasserne som implementer runnable indeholde nogel specielt for at
dette kan lade sig gøre?

m.v.h

Applet Jack



 
 
Brian Matzon (11-12-2001)
Kommentar
Fra : Brian Matzon


Dato : 11-12-01 12:37

"weaxler" <weaxler@mail1.stofanet.dk> wrote in message news:3c15c321$0$326$ba624c82@nntp02.dk.telia.net...
> Jeg har lavet en applet, som kører i den sædvenlige hovedtråd, men der er
> også andre tråds som
> laver noget animation o.s.v mit problem er, at jeg gerne vil have disse
> tråde til at stoppe når fokuset ikke er på appletten, og starte forfra når
> fokus er tilbage igen, hvordan gøres dette.
> Skal klasserne som implementer runnable indeholde nogel specielt for at
> dette kan lade sig gøre?

Ja en sleep mekanisme når applet mister fokus.
lad din applet være en FocusListener, når den så mister fokus, sætter
du et flag (som skal være volatile) - dette flag checker trådene så
på... eks: (utestet kode - virker måske ;))

....
protected volatile boolean sleeping;
....
while(running) {
while(!sleeping) {
doStuff();
}

synchronized(LOCK) {
while(sleeping) {
LOCK.wait();
}
}
}
....
i din focuslistener:
focusGained(FocusEvent e) {
sleeping = false;
synchronized(LOCK) {
LOCK.notifyAll();
}
}

Grunden til at et sådan flag skal være volatile, er fordi at VM specs'ne
tillader at en tråd holder en cachet værdi af de variabler den tilgår.

/Brian Matzon



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste