Frage zu Threads



  • Hallo ich hoffe ihr könnt mir die Antwort geben, habe zwar das Beispiel kompiliert und getestet und hätte spontan gesagt nur eins da die main Methode ja static ist... aber es ist das Gegenteil.

    Wie viele Threads können bei Ausführung der main-Methode des folgenden Programms
    entstehen und gleichzeitig existieren?
    
    class T extends Thread {
    T() {
    start();
    }
    public void run() {
    T.main(null);
    }
    public static void main(String[] argv) {
    new T();
    }
    }
    

  • Mod

    Sieht nach bieliebig vielen Threads aus, die da gleichzeitig existieren können.



  • OK Danke aber beschränkt das Java evtl. per Default auf einen bestimmten Wert (Also abhänging vom Arbeitspeicher,...) die maximale Thread anzahl?

    Und noch die andere Frage: die Methode main existiert ja nur einmal, oder? Wie kann eine statische Methode mehrmals erzeugt werden?

    public class TestProz extends Thread {
    
        public TestProz() {
            start();
        }
        public void run() {
            TestProz.main(null);
        }
    
        public static void main(String[] args) {
            System.out.println("Thread: " + Thread.currentThread().getName());
            new TestProz();
        }
    }
    
    Thread: main
    Thread: Thread-0
    Thread: Thread-1
    Thread: Thread-2
    Thread: Thread-3
    ...
    


  • ist halt ne schöne schleife die du da gebaut hast.

    wenn du einen TestProz erstellst wird über den konstruktor die main methode aufgerufen die einen neuen TestProz erstellt. im neuen TestProz passiert dann das gleiche wieder usw.

    main -> new
    start -> run -> main -> new
    start -> run -> main -> new
    start -> run -> main -> new
    start -> run -> main -> new
    ...



  • stichwort "rekursion"! naja irgenwann hängt sich das ding auf , weil hier eine unendlich rekursion stattfinden,und unendlich thread erzeugt werden..bis die ressourcen aufgebraucht sind..


Anmelden zum Antworten