Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Dabei hänge ich schon bei den ersten beiden Klassen fest.
Java:
class DemoThread extends Thread {
public void run() {
for(int i = 0; i < 10; i++) {
try {
sleep(5000);
}
catch(InterruptedException e) {
}
System.out.println("Demo-Thread");
}
}
}
public class ThreadTest {
public static void main(String args[]) {
DemoThread demoThread;
// Ab jetzt wird "Demo-Thread"
// im Hintergrund ausgegeben:
demoThread = new DemoThread();
demoThread.start();
}
}
In der ersten Klasse wird ein Objekt namens DemoThread definiert und eine Methode namens "run()" überschrieben. In der 2.Klasse wird dann ein entsprechendes Objekt angelegt und dann eine Methode namens start gestartet. Soweit ich das sehe, wird der neue Thread immer mit dieser start()-Methode gestartet...aber woher weiß Java, dass es dadurch auch die Methode run() starten soll ?
Du erbst ja von der Klasse Thread und überschreibst dessen run-Methode (aus dem Interface Runnable).
Die Methode start der Klasse Thread ruft die (überschriebene) Methode run auf.
Diese Funktionalität steckt in der Klasse Thread. zur Anwendung reicht es also prinzipiell aus, die Dokumentation der Klasse zu lesen (Und da ist dieses Vorgehen unter anderem beschrieben).
Dann wird man aber schnell stutzen, denn start() ruft einfach eine ominöse start0() Methode auf, die als "private native" deklariert wurde und wo dann die Analyse von Java Code aufhört. Native Methoden sind in c / c++ geschrieben und nicht mehr in Java. Was dies aber bei Thread bedeutet, findet sich u.a. in diesem Link: https://medium.com/@unmeshvjoshi/how-java-thread-maps-to-os-thread-e280a9fb2e06
Wenn man es genau haben wollte, dann würde einen das z.B. noch über http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/native/java/lang/Thread.c führen und so weiter.... Das alles weiter zu beschreiben führt aber hier zu weit. Hier kommt man dann schnell in Internas, die einen (normalen) Java Entwickler überhaupt nicht interessieren - zumindest so lange, wie er nicht selbst am openjdk rumbasteln möchte ...