1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

threadfrage

  • funkywon
  • 23. Oktober 2004 um 11:14
  • Unerledigt
  • funkywon
    7
    funkywon
    Mitglied
    Punkte
    440
    Beiträge
    51
    • 23. Oktober 2004 um 11:14
    • #1

    bin noch ganz ganz neu in sachen threads...

    Zitat


    class ThreadusInterruptus extends Thread
    {
    public void run()
    {
    System.out.println( "Der Anfang" );

    while ( true )
    {
    if ( isInterrupted() )
    break;

    System.out.println( "Hurra" );

    try {
    Thread.sleep( 500 );
    }
    catch ( InterruptedException e ) {
    interrupt();
    }
    }

    System.out.println( "Das Ende" );
    }

    public static void main( String args[] )
    {
    ThreadusInterruptus t = new ThreadusInterruptus();

    t.start();
    try {
    Thread.sleep( 2000 );
    } catch ( InterruptedException e ) { }

    t.interrupt();
    }
    }

    Alles anzeigen


    ok, was ich jetzt nicht versteh ist folgendes...
    in main wird der thread durch t.start() gestartet...danach wird doch aber sofort das Thread.sleep(2000) aufgerufen
    was das programm jetzt macht ist folgendes...nachdem es gestartet wurde, wird es 2 sek lang ausgeführt bevor es terminiert...
    aber wenn ich den currentthread zum schlafen bring, sollte es dann nicht so sein, dass er eher 2 sekunden schlafen sollte?
    bin sehr verwirrt..

    mfg funkywon

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 23. Oktober 2004 um 13:27
    • #2

    Na so ganz versteh ich's net, aber ich denk: Der Thread schläft sehr wohl 2 Sekunden, terminiert dann erfolgreich. Daher Laufzeit von 2 Sekunden.

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 23. Oktober 2004 um 22:28
    • #3
    Zitat von funkywon

    bin noch ganz ganz neu in sachen threads...

    ok, was ich jetzt nicht versteh ist folgendes...
    in main wird der thread durch t.start() gestartet...danach wird doch aber sofort das Thread.sleep(2000) aufgerufen
    was das programm jetzt macht ist folgendes...nachdem es gestartet wurde, wird es 2 sek lang ausgeführt bevor es terminiert...
    aber wenn ich den currentthread zum schlafen bring, sollte es dann nicht so sein, dass er eher 2 sekunden schlafen sollte?
    bin sehr verwirrt..

    Du hast 2 Threads in deinem programm: der eine trägt den namen 'main' und wurde beim programmstart erzeugt. Den anderen hast du mit t.start(); initiert.

    Thread.sleep(int) bezieht sich immer auf den Thread, der die nachricht sendet: in diesem fall ist das der main thread, der dann halt 2 sekunden schläft bevor er erst den anderen thread und dann sich selbst beendet.

    lg, Benjamin Ferrari, bookworm.at

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 24. Oktober 2004 um 09:49
    • #4

    Wenn nach Beendigung des Hauptthreads noch andere Threads laufen (die keine daemons sind), dann werden diese nicht terminiert, sondern es wird auf deren Beendigung gewartet. Sonst stimmt das, was a9bejo gesagt hat.

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 24. Oktober 2004 um 10:12
    • #5
    Zitat von Ringding

    Wenn nach Beendigung des Hauptthreads noch andere Threads laufen (die keine daemons sind), dann werden diese nicht terminiert, sondern es wird auf deren Beendigung gewartet. Sonst stimmt das, was a9bejo gesagt hat.


    hab auch nie gesagt, das alle thread automatisch terminiert werden! der code von funkywon macht das aber

    lg, Benjamin Ferrari, bookworm.at

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 24. Oktober 2004 um 13:37
    • #6

    Stimmt. Der ist so unübersichtlich (nicht eingerückt), das hab ich vorher nicht gesehen.

  • funkywon
    7
    funkywon
    Mitglied
    Punkte
    440
    Beiträge
    51
    • 25. Oktober 2004 um 15:08
    • #7

    passt, habs verstanden!
    thnx leute =)

    mfg funkywon

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung