Avatar billede danielhep Nybegynder
16. maj 2004 - 23:36 Der er 10 kommentarer og
2 løsninger

Thread vs Runnable

har siddet og læst lidt på en java artikel, men syntes der mangler forklaring...

I det ene eks. vises der brugen af Thread classen, men den har en klar ulempte pga. Java ikke tillader mutiple nedarving...

Den anden snakker om noget som hedder Runnable, hvor interfacet java.lang.Runnable skal inkluderes....

hvad og hvorfor implements Runnable istedet for Extends Thead  ??

håber min forklaring er beskrivende nok...
Avatar billede rasmusbg Nybegynder
16. maj 2004 - 23:42 #1
Grunden, til at man typisk vil implementere Runnable istedet for at extende Thread, er, at man kan implementere flere interfaces end et, og man har stadig mulighed for at extende en anden klasse, hvis det skulle være nødvendigt.
Desuden har Thread en constructor, der som parameter medtager et objekt, der implementerer Runnable, så man derved kan få startet en ny tråd.
Avatar billede danielhep Nybegynder
17. maj 2004 - 00:10 #2
ok..men hvad er Runnable så helt præcist i forhold til Thread classen... ?
Avatar billede danielhep Nybegynder
17. maj 2004 - 00:13 #3
hvad vil det egenligt sige at "implementere" i forhold til extends ?
Avatar billede tjp Mester
17. maj 2004 - 02:35 #4
Et interface er en navngiven samling af metodedefinitioner (uden implementering)og konstanterklæringer.
At implementere betyder at give definitionerne kød og blod, dvs. kode kroppen fra { til }.
Extends er at udvide en allerede given klasse med metoder og medlemmer, altså nedarve, hvilket man kun kan fra én klasse i Java.
Runnable er således et interface som klassen Thread har implementeret.
Avatar billede arne_v Ekspert
17. maj 2004 - 06:48 #5
Avatar billede arne_v Ekspert
17. maj 2004 - 06:51 #6
I C++ kan en klasse extende mange klasser

I Java kan en klasse kun extende en klasse men implementere mange interfaces

Et Java interrace svarer til en C++ klasse hvor alle metoder er
virual og = 0.

public interface XJ {
  public void foobar();
}

class XCPP
{
  public:
      virtual void foobar() = 0;
};
Avatar billede danielhep Nybegynder
17. maj 2004 - 19:11 #7
jeg læste din artikel...men kom ikke frem til om extends overhovet skal bruges til noget.....

kan implements bruges til alle classes ?
Avatar billede arne_v Ekspert
17. maj 2004 - 19:18 #8
Da du kan implementere mange interfaces i en klasse, så kan implements Runnable
metoden bruges i enhver klasse (du skal selvfølgelig lave en run metode).

extends Thread metoden kan kun bruges hvis du ikke i forvejen arver.

Jeg synes at syntaxen for den sidste er en anelse mere intuitiv, men det er
bare min helt personlige opfattelse.
Avatar billede arne_v Ekspert
17. maj 2004 - 19:19 #9
Og ja - start metoden i Thread klassen bruges !
Avatar billede danielhep Nybegynder
17. maj 2004 - 19:24 #10
ok, dé herrer.... giv nogle svar.....
Avatar billede arne_v Ekspert
17. maj 2004 - 19:25 #11
svar
Avatar billede tjp Mester
18. maj 2004 - 00:40 #12
svar
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