Kezdőoldal » Számítástechnika » Programozás » Java szálkezelés probléma?

Java szálkezelés probléma?

Figyelt kérdés

Még csak ismerkedek a témával

[link]

de a fenti linkben ahol a 'extends Thread' és az 'implements Runnable'-t hasonlítja össze teljesen ugyanaz a kód .

Például az extends Thread esetén miért kell ugyanúgy egy Thread objektnek átadni a az osztály mikor a extends miatt eleve önmaga is egy Threadclass.

Így is meg tudtam csinálni sokkal egyszerűbben:

class MyClass extends Thread{

}


class MainClass{

public static void main(String[] args) {

MyClass mc= new MyClass();

mc.start();

}

}


Vagy én nem látom át ,és van valami oka amiért az extend Thread esetén is külön Threadnek adjuk át és ott start()-oljuk az egészet?



2016. ápr. 8. 14:15
 1/4 anonim ***** válasza:
100%

Szerintem csak hülye volt aki csinálta a tutorialt, és ész nélkül copy-zott. Ha Thread-ből származtatsz, tök fölösleges átadni egy új Thread-nek.


Lehet inkább a hivatalos tutorialokat kéne olvasgatni. :)


[link]

2016. ápr. 8. 14:27
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Te nem láttad át.


A tutorialban nem adja át Thread-nek a Threadből származatott osztályt.


Thread t = new MyClass();

t.run();


nem azt jelenti, hogy átadta a thread-nek,

hanem azt, hogy a t a MyClass osztályt (mely a Thread osztály leszármazottja) példányosítod.

2016. ápr. 12. 22:36
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

#2: Ez a kód van a Thread-es példában, és itt bizony egy új Thread-nek adja át:


class ThreadDemo extends Thread { <--------

private Thread t; <-------

private String threadName;


ThreadDemo( String name){

threadName = name;

System.out.println("Creating " + threadName );

}

public void run() {

System.out.println("Running " + threadName );

try {

for(int i = 4; i > 0; i--) {

System.out.println("Thread: " + threadName + ", " + i);

// Let the thread sleep for a while.

Thread.sleep(50);

}

} catch (InterruptedException e) {

System.out.println("Thread " + threadName + " interrupted.");

}

System.out.println("Thread " + threadName + " exiting.");

}


public void start ()

{

System.out.println("Starting " + threadName );

if (t == null)

{

t = new Thread (this, threadName); <-------

t.start ();

}

}


}

2016. ápr. 12. 23:02
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Igazad van, én vagyok a vak, egészen mást néztem.


Tényleg elég fura megoldás, de ennek ellenére nem lehet belekötni, mert a Thread implementálja a Runnable interface-t.

A Thread api dokumentációban pont egy ilyen példa szerepel.


[link]


Mondjuk a való világban soha nem találkoztam még ilyennel. Ha valaki rájön ennek az előnyére az ne habozzon megosztani itt velünk :)

2016. ápr. 13. 00:20
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!