1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Java/Thread nimmt 100% CPU

    • Frage
  • Xote
  • 5. Dezember 2003 um 12:38
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Xote
    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

  • Marc_enaweg
    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)

  • dose
    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()

  • Zentor
    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
    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 ;(

    THX auf jedenfall
    Xote

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum