Java szálkezelés probléma?
Még csak ismerkedek a témával
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?
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. :)
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.
#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 ();
}
}
}
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.
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 :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!