/ 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
Håndtere flere tråde samtidig.
Fra : Inge Tønners


Dato : 03-01-01 21:03

Hej. Hvordan laver man en applet der kan håndtere fler tråde samtidig.
F.eks. skal den ene tråd kunne scrole en tekst og den anden tråd få en bold
til at hoppe rundt. De to ting skal ske uafhængigt af hinanden.



 
 
Nikolaj Lundsgaard (04-01-2001)
Kommentar
Fra : Nikolaj Lundsgaard


Dato : 04-01-01 02:35

Inge Tønners skrev i meddelelsen <930043$2ct0$1@news.cybercity.dk>...
>Hej. Hvordan laver man en applet der kan håndtere fler tråde samtidig.
>F.eks. skal den ene tråd kunne scrole en tekst og den anden tråd få en bold
>til at hoppe rundt. De to ting skal ske uafhængigt af hinanden.

Du laver to forskellige klasser, der extender Thread, og skriver koden i de
rigtige metoder... Herefter instantierer og starter du trådene. Du kan læse
lidt mere om det her:
http://java.sun.com/docs/books/tutorial/essential/threads/


/Nikolaj



Ulrik Magnusson (04-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 04-01-01 02:45

> Hej. Hvordan laver man en applet der kan håndtere fler tråde samtidig.
> F.eks. skal den ene tråd kunne scrole en tekst og den anden tråd få en bold
> til at hoppe rundt. De to ting skal ske uafhængigt af hinanden.

Du kunne lave 2 klasser Ball og Scroller, der implementerer GUpdater
interface't nedenfor.
Idéen er, at de enkelte objekter selv bestemmer deres handlinger, og vha et
kald fra en hovedløkke opdaterer et Graphics objekt jævnligt. Så er du også fri
for at belaste systemet med flere tråde.

interface GUpdater
{
// draw() allows the GUpdater to update a graphics object
public void draw( Graphics graphics );
}

class Ball implements Sprite
{
public void draw( Graphics graphics )
{
// opdater graphics - fx tegn en bold på et bestemt sted
}
}

class Scroller implements Sprite
{
public void draw( Graphics graphics )
{
// opdater graphics - fx tegn en tekst på et bestemt sted
}
}

class SampleApplet extends Applet implements Runnable
{
private Ball ball = new Ball();
private Scroller scroller = new Scroller();
private Thread thread = null;
private Graphics graphics = getGraphics();

public void start()
{
if( thread == null )
{
thread = new Thread( this );
thread.start()
}
}

public void stop()
{
thread = null;
}

public void run()
{
while( thread != null )
{
// insert sleep here
ball.draw( graphics );
scroller.draw( graphics );
}
}
}

En anden idé kunne være at lade Ball og Scroller udvider Thread klassen og
startes som 2 forskellige tråde, der begge kender det samme graphics objekt.

Ulrik Magnusson


Ulrik Magnusson (04-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 04-01-01 02:48

> class Ball implements Sprite
> class Scroller implements Sprite

skal selvfølgelig være :

class Ball implements GUpdater
class Scroller implements GUpdater

Ulrik Magnusson



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste