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

Java/Thread nimmt 100% CPU

    • Frage
  • Xote
  • 5. Dezember 2003 um 12:38
  • Unerledigt
  • Xote
    6
    Xote
    Mitglied
    Punkte
    335
    Beiträge
    57
    • 5. Dezember 2003 um 12:38
    • #1

    hi,

    wollte einen Thread machen, der auf einem bestimmten Port lauscht. Wie ich es damals in Verteilte Systeme gelernt habe mache ich das natürlich mit einer While-Schleife. Problem: Das Ding funktioniert zwar, nimmt aber 100% von der CPU-Leistung. Ist das normal, oder kann man das irgendwie anders machen? Mit der Thread Priority gehts einmal nicht, da (im Moment) noch keine anderen Threads da sind.

    Hilfts vielleicht was wenn ich diesen Thread als demon laufen lasse? Habe da nicht so richtig den Durchblick was das bringen könnte...

    mfg
    Xote

    "Gibt es ein Programm, das mir verbietet ab 0.5 Promille root-Rechte auf meinem Rechner zu bekommen?"

  • Marc_enaweg
    9
    Marc_enaweg
    Mitglied
    Reaktionen
    1
    Punkte
    771
    Beiträge
    147
    • 5. Dezember 2003 um 13:29
    • #2

    ... er versucht eben die while schleife so schnell als möglich auszuführen ... daher die 100% CPU last ...

    1. kannst du in der while schleife einen befehl ausführen (keine ahnung wie der in java heißt oder ob es den überhaupt gibt) dadurch wird anderen prozessen die möglichkeit gegeben auch etwas zu machen ... (hier bleibt die CPU last auf 100%)

    2. existiert vielleicht die möglichkeit ein "Wait" auszuführen das deine schleife für einige millisekunden warten lässt ... (dann sollte die CPU last nicht mehr auf 100% sein)

    [Enaweg]

  • dose
    13
    dose
    Mitglied
    Reaktionen
    4
    Punkte
    1.679
    Beiträge
    335
    • 5. Dezember 2003 um 15:10
    • #3

    Hm, ich hab jetzt nur kurz in meinen alten Sourcecode geschaut, ohne es zu testen, aber im Grunde genommen müßte eigentlich die ServerSocket.accept() Methode blockieren, bis sich am Port irgendwas tut...

    http://java.sun.com/j2se/1.4.2/doc…t.html#accept()

    Bei nem Datagram/MulticastSocket sollts mit receive() ähnlich sein, vielleicht hast Du auch das Timeout zu niedrig gesetzt ?
    (MulticastSocket.setSoTimeout())

    http://java.sun.com/j2se/1.4.2/doc….html#receive()

    yast, SuSEconfig, apt-get and rpm - the 4 horsemen of the apocalypse

    Platform of insanity :: http://www.dose-xp.org

  • Zentor
    16
    Zentor
    Mitglied
    Reaktionen
    5
    Punkte
    2.710
    Beiträge
    506
    • 5. Dezember 2003 um 18:11
    • #4

    Im receive zustand wartet die Verarbeitung bis ein Packet einlangt (bzw. aufs Timeout), dabei wird kaum Prozessor/HDD Leistung benutzt. Du machst wahrscheinlich was falsch bei deiner Implementation....
    Weiters kannst du über wait() den Thread einbremsen.
    mfg Zentor

  • Xote
    6
    Xote
    Mitglied
    Punkte
    335
    Beiträge
    57
    • 7. Dezember 2003 um 14:14
    • #5
    Zitat von dose

    Hm, ich hab jetzt nur kurz in meinen alten Sourcecode geschaut, ohne es zu testen, aber im Grunde genommen müßte eigentlich die ServerSocket.accept() Methode blockieren, bis sich am Port irgendwas tut...


    jaja, als Medieninformatiker hatte ich ja nur die ersten zwei Beispiele zu machen, nix mit ServerSocket :loudly_crying_face:

    THX auf jedenfall
    Xote

    "Gibt es ein Programm, das mir verbietet ab 0.5 Promille root-Rechte auf meinem Rechner zu bekommen?"

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    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